diff --git a/.envrc b/.envrc index 1d953f4..f773b0e 100644 --- a/.envrc +++ b/.envrc @@ -1 +1,4 @@ -use nix +use flake +layout node +mkdir -p "${HOME}/Library/Application Support/SourceGit" +echo "${PATH}" > "${HOME}/Library/Application Support/SourceGit/PATH" diff --git a/.gitattributes b/.gitattributes deleted file mode 100644 index 1453553..0000000 --- a/.gitattributes +++ /dev/null @@ -1 +0,0 @@ -assets/scripts/pro-duotone-svg-icons/** filter=git-crypt diff=git-crypt diff --git a/.github/workflows/hugo.yml b/.github/workflows/hugo.yml deleted file mode 100644 index cd6ae84..0000000 --- a/.github/workflows/hugo.yml +++ /dev/null @@ -1,90 +0,0 @@ -# Sample workflow for building and deploying a Hugo site to GitHub Pages -name: Deploy Hugo site to Pages - -on: - # Runs on pushes targeting the default branch - push: - branches: ["master"] - - # Allows you to run this workflow manually from the Actions tab - workflow_dispatch: - -# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages -permissions: - contents: read - pages: write - id-token: write - -# Allow one concurrent deployment -concurrency: - group: "pages" - cancel-in-progress: true - -# Default to bash -defaults: - run: - shell: bash - -jobs: - # Build job - build: - runs-on: ubuntu-latest - env: - HUGO_VERSION: 0.111.3 - NODE_VERSION: 18.14.2 - steps: - - name: Checkout - uses: actions/checkout@v3 - with: - submodules: recursive - fetch-depth: 0 - - name: Install git-crypt - run: | - sudo apt-get install git-crypt -y - - name: Decrypt repository - run: | - echo "${{ secrets.GIT_CRYPT_KEY }}" \ - | base64 --decode \ - > ~/millironx.github.io.key - git-crypt unlock ~/millironx.github.io.key - - name: Install Node.js - uses: actions/setup-node@v3 - with: - node-version: "${{ env.NODE_VERSION }}" - - name: Install Hugo CLI - uses: peaceiris/actions-hugo@v2 - with: - hugo-version: "${{ env.HUGO_VERSION }}" - extended: true - - name: Setup Pages - id: pages - uses: actions/configure-pages@v2 - - name: Install postcss cli - run: npm install -g postcss-cli - - name: Install Node.js dependencies - run: npm ci - - name: Build with Hugo - env: - # For maximum backward compatibility with Hugo modules - HUGO_ENVIRONMENT: production - HUGO_ENV: production - run: | - hugo \ - --minify \ - --baseURL "${{ steps.pages.outputs.base_url }}/" - - name: Upload artifact - uses: actions/upload-pages-artifact@v1 - with: - path: ./public - - # Deployment job - deploy: - environment: - name: github-pages - url: ${{ steps.deployment.outputs.page_url }} - runs-on: ubuntu-latest - needs: build - steps: - - name: Deploy to GitHub Pages - id: deployment - uses: actions/deploy-pages@v1 diff --git a/.gitignore b/.gitignore index 8ff64e0..c4bb138 100644 --- a/.gitignore +++ b/.gitignore @@ -151,3 +151,41 @@ dist .yarn/build-state.yml .yarn/install-state.gz .pnp.* + +### FontAwesome gitignore ### + +fontawesome-pro-6.3.0-web + +### direnv gitignore ### +.direnv + +### Nix Flake gitignore ### +result + +### MacOS gitignore ### +# General +.DS_Store +.AppleDouble +.LSOverride + +# Icon must end with two \r +Icon + +# Thumbnails +._* + +# Files that might appear in the root of a volume +.DocumentRevisions-V100 +.fseventsd +.Spotlight-V100 +.TemporaryItems +.Trashes +.VolumeIcon.icns +.com.apple.timemachine.donotpresent + +# Directories potentially created on remote AFP share +.AppleDB +.AppleDesktop +Network Trash Folder +Temporary Items +.apdisk diff --git a/.gitpod.yml b/.gitpod.yml deleted file mode 100644 index 6e15b28..0000000 --- a/.gitpod.yml +++ /dev/null @@ -1,10 +0,0 @@ -# List the start up tasks. Learn more https://www.gitpod.io/docs/config-start-tasks/ -tasks: - - name: Install Hugo dependencies - before: brew install hugo - init: echo "Your version of Hugo is `hugo version`" - command: npm ci && hugo server -D -F --baseUrl $(gp url 1313) --liveReloadPort=443 --appendPort=false --bind=0.0.0.0 -# List the ports to expose. Learn more https://www.gitpod.io/docs/config-ports/ -ports: - - port: 1313 - onOpen: open-preview diff --git a/.prettierignore b/.prettierignore index aad4421..1fea400 100644 --- a/.prettierignore +++ b/.prettierignore @@ -1,2 +1 @@ -node_modules -themes +layouts/_default/index.manifest.json diff --git a/.prettierrc b/.prettierrc index 7c5268b..672b6f3 100644 --- a/.prettierrc +++ b/.prettierrc @@ -4,3 +4,6 @@ overrides: - files: "*.html" options: parser: "go-template" + - files: "*.gotmpl" + options: + parser: "go-template" diff --git a/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..ad92582 --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,3 @@ +{ + "editor.formatOnSave": true +} diff --git a/.woodpecker.yml b/.woodpecker.yml new file mode 100644 index 0000000..881a8fd --- /dev/null +++ b/.woodpecker.yml @@ -0,0 +1,18 @@ +when: + branch: master + event: + - push + - cron + cron: "weekly-build" + +steps: + - name: Build site + image: hugomods/hugo:std-base-non-root-0.141.0 + commands: + - hugo --minify + - name: Deploy to pages + image: codeberg.org/xfix/plugin-codeberg-pages-deploy:1 + settings: + folder: public + ssh_key: + from_secret: ssh_key diff --git a/.zed/settings.json b/.zed/settings.json new file mode 100644 index 0000000..eb5924a --- /dev/null +++ b/.zed/settings.json @@ -0,0 +1,13 @@ +{ + "languages": { + "HTML": { + "formatter": { + "external": { + "command": "prettier", + "arguments": ["--stdin-filepath", "{buffer_path}"] + } + } + } + }, + "file_types": { "HTML": ["gotmpl"] } +} diff --git a/README.md b/README.md index ca73784..165340a 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,42 @@ -# millironx.github.io +# pages -My personal website. Now hosted over at https://millironx.com +[![status-badge](https://woodpecker.millironx.com/api/badges/30/status.svg?branch=master)](https://woodpecker.millironx.com/repos/30/branches/master) + +My personal website. Hosted over at + +## Notes to self + +### Nix dev shell + +All developer dependencies are now bundled as a Nix Flake. The only trouble with +this is that npm packages don't play well with Nix (and especially Flakes), so +npm packages are specified twice: once in `package{-lock}.json` and then again +in `node*.nix`. + +Compounding this, there are formatters and commit hooks that require npm to be +functional. So, to develop right now requires allowing direnv to setup the Nix +development shell, then immediately installing npm packages via `npm ci`. VSCode +(with extensions) and Zed are smart enough to figure out how to use direnv, and +direnv will pass the PATH to SourceGit for Mac, but other programs aren't that +smart, so you'll need to launch those programs from inside a direnv shell to +make sure they have Prettier, Husky, and all that jazz to execute the hooks. + +Last compounding factors: if `node_modules` is present in the root directory, +then node2nix won't create a correct derivation, so `node_modules` will need to +be temporarily deleted after modifying any npm packages, then as soon as +node2nix is happy, then immediately run `npm ci` to get the commit hooks working +again. Oh, and also, I renamed the `default.nix` file generated by node2nix to +node.nix to avoid giving direnv any wrong impressions about what derivation to +run. + +Yes, hopefully I can get completely away from npm here soon, but this is a minor +inconvenience considering how (not) often I install new packages into this site, +and really discourages me from contributing to the website obesity crisis. + +### Nix building + +Nix building will not work because Hugo reaches out to the internet via content +adapters, and that (by intention) is not perfectly reproducable. As such, +_development_ tools are installed in a Nix shell, but building has been removed +from the Flake. Thankfully, hugomods provides "canonical" Docker images for hugo +now. diff --git a/assets/characters/README.md b/assets/characters/README.md new file mode 100644 index 0000000..3b2d851 --- /dev/null +++ b/assets/characters/README.md @@ -0,0 +1,30 @@ +# Characters + +Imaginary friends that help me inject personality into my articles. These are +anthropomorphized versions of animals that I have known in real life. I tried to +draw them roughly in the style of Chris Pasquini, but failed myself, then tried +using Perplexity's image generation. The style isn't quite the same, but I like +it for these animals. Also, Perplexity does a horrible job of labeling images, +so ignore the ref sheet emotion labels. + +## Spawn of Satan (aka Spawn aka SOS) + +![Spawn ref sheet](spawn/_ref-body-perplexity.png) + +Spawn of Satan is the name Travis gave to the cannulated cow, and it stuck. +Spawn is old and cynical after having every professor with a new idea experiment +on her. After being in academia for so long, she knows her way around +mathematics and the scientific method reasonably well, even if she's never +formally taken a college course in the sciences. She is the realist to any blog +post's optimist. + +## Whelen + +![Whelen ref sheet](whelen/_ref-body-perplexity.png) + +Whelen is a happy-go-lucky German Shepherd/Husky mix puppy. He's been to school +once - and that was just to get neutered - so his knowledge of math and science, +heck, even of the humanities, isn't very good. He is very naive and thinks +everyone is nice and wants to be his friend, but he is also friendly to everyone +and is very vocal when he feels left out. He will step in when any blog post is +getting too technical and demand an explanation for real people (dogs?). diff --git a/assets/characters/spawn/_ref-blueeye-perplexity.png b/assets/characters/spawn/_ref-blueeye-perplexity.png new file mode 100644 index 0000000..b8bef00 Binary files /dev/null and b/assets/characters/spawn/_ref-blueeye-perplexity.png differ diff --git a/assets/characters/spawn/_ref-body-perplexity.png b/assets/characters/spawn/_ref-body-perplexity.png new file mode 100644 index 0000000..04f95a6 Binary files /dev/null and b/assets/characters/spawn/_ref-body-perplexity.png differ diff --git a/assets/characters/spawn/_ref-bodysmirk-perplexity.png b/assets/characters/spawn/_ref-bodysmirk-perplexity.png new file mode 100644 index 0000000..afb9ba2 Binary files /dev/null and b/assets/characters/spawn/_ref-bodysmirk-perplexity.png differ diff --git a/assets/characters/spawn/_ref-face-perplexity.png b/assets/characters/spawn/_ref-face-perplexity.png new file mode 100644 index 0000000..de286db Binary files /dev/null and b/assets/characters/spawn/_ref-face-perplexity.png differ diff --git a/assets/characters/spawn/body-anger.png b/assets/characters/spawn/body-anger.png new file mode 100644 index 0000000..0f9fd87 Binary files /dev/null and b/assets/characters/spawn/body-anger.png differ diff --git a/assets/characters/spawn/body-lazy.png b/assets/characters/spawn/body-lazy.png new file mode 100644 index 0000000..530eb46 Binary files /dev/null and b/assets/characters/spawn/body-lazy.png differ diff --git a/assets/characters/spawn/body-skeptic.png b/assets/characters/spawn/body-skeptic.png new file mode 100644 index 0000000..8e110dc Binary files /dev/null and b/assets/characters/spawn/body-skeptic.png differ diff --git a/assets/characters/spawn/body-snark.png b/assets/characters/spawn/body-snark.png new file mode 100644 index 0000000..e2be9e1 Binary files /dev/null and b/assets/characters/spawn/body-snark.png differ diff --git a/assets/characters/spawn/body-tired.png b/assets/characters/spawn/body-tired.png new file mode 100644 index 0000000..3d84c4d Binary files /dev/null and b/assets/characters/spawn/body-tired.png differ diff --git a/assets/characters/spawn/face-confusion.png b/assets/characters/spawn/face-confusion.png new file mode 100644 index 0000000..6a70166 Binary files /dev/null and b/assets/characters/spawn/face-confusion.png differ diff --git a/assets/characters/spawn/face-happy.png b/assets/characters/spawn/face-happy.png new file mode 100644 index 0000000..445dcef Binary files /dev/null and b/assets/characters/spawn/face-happy.png differ diff --git a/assets/characters/spawn/face-neutral.png b/assets/characters/spawn/face-neutral.png new file mode 100644 index 0000000..44b5522 Binary files /dev/null and b/assets/characters/spawn/face-neutral.png differ diff --git a/assets/characters/spawn/face-sad.png b/assets/characters/spawn/face-sad.png new file mode 100644 index 0000000..15fdb4e Binary files /dev/null and b/assets/characters/spawn/face-sad.png differ diff --git a/assets/characters/spawn/face-toldyouso.png b/assets/characters/spawn/face-toldyouso.png new file mode 100644 index 0000000..9a908bb Binary files /dev/null and b/assets/characters/spawn/face-toldyouso.png differ diff --git a/assets/characters/whelen/_ref-body-perplexity.png b/assets/characters/whelen/_ref-body-perplexity.png new file mode 100644 index 0000000..e5d4103 Binary files /dev/null and b/assets/characters/whelen/_ref-body-perplexity.png differ diff --git a/assets/characters/whelen/_ref-face-perplexity.png b/assets/characters/whelen/_ref-face-perplexity.png new file mode 100644 index 0000000..107709c Binary files /dev/null and b/assets/characters/whelen/_ref-face-perplexity.png differ diff --git a/assets/characters/whelen/body-determined.png b/assets/characters/whelen/body-determined.png new file mode 100644 index 0000000..2c37c46 Binary files /dev/null and b/assets/characters/whelen/body-determined.png differ diff --git a/assets/characters/whelen/body-happy.png b/assets/characters/whelen/body-happy.png new file mode 100644 index 0000000..ef40187 Binary files /dev/null and b/assets/characters/whelen/body-happy.png differ diff --git a/assets/characters/whelen/body-neutral.png b/assets/characters/whelen/body-neutral.png new file mode 100644 index 0000000..9737ccc Binary files /dev/null and b/assets/characters/whelen/body-neutral.png differ diff --git a/assets/characters/whelen/body-sad.png b/assets/characters/whelen/body-sad.png new file mode 100644 index 0000000..2056f02 Binary files /dev/null and b/assets/characters/whelen/body-sad.png differ diff --git a/assets/characters/whelen/body-tired.png b/assets/characters/whelen/body-tired.png new file mode 100644 index 0000000..855a49d Binary files /dev/null and b/assets/characters/whelen/body-tired.png differ diff --git a/assets/characters/whelen/body-worry.png b/assets/characters/whelen/body-worry.png new file mode 100644 index 0000000..2dd85e2 Binary files /dev/null and b/assets/characters/whelen/body-worry.png differ diff --git a/assets/characters/whelen/face-anticipation.png b/assets/characters/whelen/face-anticipation.png new file mode 100644 index 0000000..0be27d0 Binary files /dev/null and b/assets/characters/whelen/face-anticipation.png differ diff --git a/assets/characters/whelen/face-bored.png b/assets/characters/whelen/face-bored.png new file mode 100644 index 0000000..d376b4d Binary files /dev/null and b/assets/characters/whelen/face-bored.png differ diff --git a/assets/characters/whelen/face-happy.png b/assets/characters/whelen/face-happy.png new file mode 100644 index 0000000..af35cae Binary files /dev/null and b/assets/characters/whelen/face-happy.png differ diff --git a/assets/characters/whelen/face-neutral.png b/assets/characters/whelen/face-neutral.png new file mode 100644 index 0000000..1a93432 Binary files /dev/null and b/assets/characters/whelen/face-neutral.png differ diff --git a/assets/characters/whelen/face-skeptic.png b/assets/characters/whelen/face-skeptic.png new file mode 100644 index 0000000..33cc063 Binary files /dev/null and b/assets/characters/whelen/face-skeptic.png differ diff --git a/assets/characters/whelen/face-tired.png b/assets/characters/whelen/face-tired.png new file mode 100644 index 0000000..f395166 Binary files /dev/null and b/assets/characters/whelen/face-tired.png differ diff --git a/assets/characters/whelen/face-worry.png b/assets/characters/whelen/face-worry.png new file mode 100644 index 0000000..563b68e Binary files /dev/null and b/assets/characters/whelen/face-worry.png differ diff --git a/assets/graphics/fa/bitcoin.svg b/assets/graphics/fa/bitcoin.svg new file mode 100644 index 0000000..8815bce --- /dev/null +++ b/assets/graphics/fa/bitcoin.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/block-quote.svg b/assets/graphics/fa/block-quote.svg new file mode 100644 index 0000000..faa51e9 --- /dev/null +++ b/assets/graphics/fa/block-quote.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/book.svg b/assets/graphics/fa/book.svg new file mode 100644 index 0000000..a4957d9 --- /dev/null +++ b/assets/graphics/fa/book.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/browser.svg b/assets/graphics/fa/browser.svg new file mode 100644 index 0000000..fe78601 --- /dev/null +++ b/assets/graphics/fa/browser.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/candy-bar.svg b/assets/graphics/fa/candy-bar.svg new file mode 100644 index 0000000..3c0bdfa --- /dev/null +++ b/assets/graphics/fa/candy-bar.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/chevrons-down.svg b/assets/graphics/fa/chevrons-down.svg new file mode 100644 index 0000000..0fab552 --- /dev/null +++ b/assets/graphics/fa/chevrons-down.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/circle-info.svg b/assets/graphics/fa/circle-info.svg new file mode 100644 index 0000000..025e8d0 --- /dev/null +++ b/assets/graphics/fa/circle-info.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/circle-quarters.svg b/assets/graphics/fa/circle-quarters.svg new file mode 100644 index 0000000..31f53d2 --- /dev/null +++ b/assets/graphics/fa/circle-quarters.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/code.svg b/assets/graphics/fa/code.svg new file mode 100644 index 0000000..c43b6d1 --- /dev/null +++ b/assets/graphics/fa/code.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/codeberg.svg b/assets/graphics/fa/codeberg.svg new file mode 100644 index 0000000..d5fdd1a --- /dev/null +++ b/assets/graphics/fa/codeberg.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/graphics/fa/comment.svg b/assets/graphics/fa/comment.svg new file mode 100644 index 0000000..a113bb1 --- /dev/null +++ b/assets/graphics/fa/comment.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/cowbell.svg b/assets/graphics/fa/cowbell.svg new file mode 100644 index 0000000..6b176d6 --- /dev/null +++ b/assets/graphics/fa/cowbell.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/ebay.svg b/assets/graphics/fa/ebay.svg new file mode 100644 index 0000000..cc19ef6 --- /dev/null +++ b/assets/graphics/fa/ebay.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/ellipsis.svg b/assets/graphics/fa/ellipsis.svg new file mode 100644 index 0000000..454acdc --- /dev/null +++ b/assets/graphics/fa/ellipsis.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/ethereum.svg b/assets/graphics/fa/ethereum.svg new file mode 100644 index 0000000..b200fd2 --- /dev/null +++ b/assets/graphics/fa/ethereum.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/file-alt.svg b/assets/graphics/fa/file-alt.svg new file mode 100644 index 0000000..cbeb1cd --- /dev/null +++ b/assets/graphics/fa/file-alt.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/file-signature.svg b/assets/graphics/fa/file-signature.svg new file mode 100644 index 0000000..393f01d --- /dev/null +++ b/assets/graphics/fa/file-signature.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/github.svg b/assets/graphics/fa/github.svg new file mode 100644 index 0000000..af1538f --- /dev/null +++ b/assets/graphics/fa/github.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/gitlab.svg b/assets/graphics/fa/gitlab.svg new file mode 100644 index 0000000..53448bd --- /dev/null +++ b/assets/graphics/fa/gitlab.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/globe.svg b/assets/graphics/fa/globe.svg new file mode 100644 index 0000000..7f6ac96 --- /dev/null +++ b/assets/graphics/fa/globe.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/google-scholar.svg b/assets/graphics/fa/google-scholar.svg new file mode 100644 index 0000000..e2b6347 --- /dev/null +++ b/assets/graphics/fa/google-scholar.svg @@ -0,0 +1 @@ + diff --git a/assets/graphics/fa/graduation-cap.svg b/assets/graphics/fa/graduation-cap.svg new file mode 100644 index 0000000..c8cf5f7 --- /dev/null +++ b/assets/graphics/fa/graduation-cap.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/hacker-news.svg b/assets/graphics/fa/hacker-news.svg new file mode 100644 index 0000000..1d402c1 --- /dev/null +++ b/assets/graphics/fa/hacker-news.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/home.svg b/assets/graphics/fa/home.svg new file mode 100644 index 0000000..4375a16 --- /dev/null +++ b/assets/graphics/fa/home.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/house.svg b/assets/graphics/fa/house.svg new file mode 100644 index 0000000..4375a16 --- /dev/null +++ b/assets/graphics/fa/house.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/lightning.svg b/assets/graphics/fa/lightning.svg new file mode 100644 index 0000000..e8cc00c --- /dev/null +++ b/assets/graphics/fa/lightning.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/link.svg b/assets/graphics/fa/link.svg new file mode 100644 index 0000000..9ace2c7 --- /dev/null +++ b/assets/graphics/fa/link.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/lutris.svg b/assets/graphics/fa/lutris.svg new file mode 100644 index 0000000..fd6d2aa --- /dev/null +++ b/assets/graphics/fa/lutris.svg @@ -0,0 +1,65 @@ + + + + + + + + + + + + + + + + + diff --git a/assets/graphics/fa/matrix.svg b/assets/graphics/fa/matrix.svg new file mode 100644 index 0000000..a178912 --- /dev/null +++ b/assets/graphics/fa/matrix.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/graphics/fa/monero.svg b/assets/graphics/fa/monero.svg new file mode 100644 index 0000000..2a1a5dc --- /dev/null +++ b/assets/graphics/fa/monero.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/notebook.svg b/assets/graphics/fa/notebook.svg new file mode 100644 index 0000000..e8c472d --- /dev/null +++ b/assets/graphics/fa/notebook.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/orcid.svg b/assets/graphics/fa/orcid.svg new file mode 100644 index 0000000..59d1496 --- /dev/null +++ b/assets/graphics/fa/orcid.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/p.svg b/assets/graphics/fa/p.svg new file mode 100644 index 0000000..8082e1d --- /dev/null +++ b/assets/graphics/fa/p.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/podium.svg b/assets/graphics/fa/podium.svg new file mode 100644 index 0000000..651ac61 --- /dev/null +++ b/assets/graphics/fa/podium.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/presentation.svg b/assets/graphics/fa/presentation.svg new file mode 100644 index 0000000..f0e782f --- /dev/null +++ b/assets/graphics/fa/presentation.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/right-to-bracket.svg b/assets/graphics/fa/right-to-bracket.svg new file mode 100644 index 0000000..0d86ac3 --- /dev/null +++ b/assets/graphics/fa/right-to-bracket.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/rss.svg b/assets/graphics/fa/rss.svg new file mode 100644 index 0000000..ce2e0d4 --- /dev/null +++ b/assets/graphics/fa/rss.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/scale-balanced.svg b/assets/graphics/fa/scale-balanced.svg new file mode 100644 index 0000000..3423b7f --- /dev/null +++ b/assets/graphics/fa/scale-balanced.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/scroll.svg b/assets/graphics/fa/scroll.svg new file mode 100644 index 0000000..2d5e7a8 --- /dev/null +++ b/assets/graphics/fa/scroll.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/spotify.svg b/assets/graphics/fa/spotify.svg new file mode 100644 index 0000000..cb99987 --- /dev/null +++ b/assets/graphics/fa/spotify.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/stack-overflow.svg b/assets/graphics/fa/stack-overflow.svg new file mode 100644 index 0000000..8fe3d70 --- /dev/null +++ b/assets/graphics/fa/stack-overflow.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/steam.svg b/assets/graphics/fa/steam.svg new file mode 100644 index 0000000..ff6db89 --- /dev/null +++ b/assets/graphics/fa/steam.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/tag.svg b/assets/graphics/fa/tag.svg new file mode 100644 index 0000000..ef06d64 --- /dev/null +++ b/assets/graphics/fa/tag.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/university.svg b/assets/graphics/fa/university.svg new file mode 100644 index 0000000..a99a14e --- /dev/null +++ b/assets/graphics/fa/university.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/user-astronaut.svg b/assets/graphics/fa/user-astronaut.svg new file mode 100644 index 0000000..2f6d921 --- /dev/null +++ b/assets/graphics/fa/user-astronaut.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/user.svg b/assets/graphics/fa/user.svg new file mode 100644 index 0000000..8b31931 --- /dev/null +++ b/assets/graphics/fa/user.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/video.svg b/assets/graphics/fa/video.svg new file mode 100644 index 0000000..c4052b1 --- /dev/null +++ b/assets/graphics/fa/video.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/vimeo.svg b/assets/graphics/fa/vimeo.svg new file mode 100644 index 0000000..ee03fa1 --- /dev/null +++ b/assets/graphics/fa/vimeo.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/w.svg b/assets/graphics/fa/w.svg new file mode 100644 index 0000000..59396f5 --- /dev/null +++ b/assets/graphics/fa/w.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/zcash.svg b/assets/graphics/fa/zcash.svg new file mode 100644 index 0000000..2a9c9d7 --- /dev/null +++ b/assets/graphics/fa/zcash.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/assets/graphics/fa/zotero.svg b/assets/graphics/fa/zotero.svg new file mode 100644 index 0000000..2948c62 --- /dev/null +++ b/assets/graphics/fa/zotero.svg @@ -0,0 +1,3 @@ + + + diff --git a/assets/graphics/millironx-icon.png b/assets/graphics/millironx-icon.png new file mode 100644 index 0000000..1c4913f Binary files /dev/null and b/assets/graphics/millironx-icon.png differ diff --git a/assets/graphics/millironx-icon.svg b/assets/graphics/millironx-icon.svg new file mode 100644 index 0000000..42b2777 --- /dev/null +++ b/assets/graphics/millironx-icon.svg @@ -0,0 +1,51 @@ + + + + + + + + + + diff --git a/assets/graphics/millironx.svg b/assets/graphics/millironx.svg index 90dbb4a..2e1c756 100644 --- a/assets/graphics/millironx.svg +++ b/assets/graphics/millironx.svg @@ -1,108 +1,42 @@ - + - - - - - - - - - - - image/svg+xml - - - - - - + width="29.935179mm" + height="8.7677584mm" + viewBox="0 0 106.06953 31.06686" + version="1.1" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg" +> + + - - - + d="M 4.29299 15.8457 L 24.293 15.8457 C 25.8894 15.8457 27.52 15.7729 29.004 15.1843 C 30.4879 14.5958 31.7494 13.528 32.7224 12.2624 C 33.6954 10.9968 34.4053 9.54663 35.3637 8.26996 C 35.8429 7.63163 36.3933 7.03719 37.054 6.58932 C 37.7147 6.14145 38.4948 5.8457 39.293 5.8457 C 40.0912 5.8457 40.8713 6.14145 41.532 6.58932 C 42.1927 7.03719 42.743 7.63163 43.2223 8.26996 C 44.1807 9.54663 44.8906 10.9968 45.8636 12.2624 C 46.8366 13.528 48.098 14.5958 49.582 15.1843 C 51.0659 15.7729 52.6966 15.8457 54.293 15.8457 L 74.293 15.8457" + /> + + diff --git a/assets/scripts/fa-icons.js b/assets/scripts/fa-icons.js deleted file mode 100644 index bae14e1..0000000 --- a/assets/scripts/fa-icons.js +++ /dev/null @@ -1,123 +0,0 @@ -import { library, icon, config, dom } from "@fortawesome/fontawesome-svg-core"; -import { - faBook, - faBrowser, - faComment, - faCowbell, - faEllipsis, - faFileAlt, - faFileSignature, - faGlobe, - faGraduationCap, - faHome, - faNotebook, - faPodium, - faPresentation, - faTag, - faScaleBalanced, - faUniversity, - faUser, - faUserAstronaut, - faVideo, - faW, -} from "./pro-duotone-svg-icons/index.mjs"; -import { - faDiscord, - faGithub, - faGitlab, - faGolang, - faHtml5, - faOrcid, - faStackOverflow, - faSteam, - faVimeo, -} from "@fortawesome/free-brands-svg-icons"; - -config.familyDefault = "duotone"; -config.styleDefault = "duotone"; - -const faBullSperm = { - prefix: "fax", - iconName: "bull-sperm", - icon: [ - 512, - 512, - [], - null, - "M96 32c-6.691.363-12.375 4.062-15.375 7.062l-64 64c-12.8 12.8-5.333 26.667 0 32l96 64c10.3 10.301 22.938 4.887 37.563-7.812 8.635 9.735 16.63 18.38 23.125 24.875 8.33 8.33 23.436 16.284 41.75 24.313 18.313 8.028 39.82 16.065 60.812 24.062 20.992 7.997 41.474 15.986 57.625 23.938 16.15 7.95 27.882 16.013 31.5 23.25 6.52 13.038 26.468 44.939 48.875 79.75 22.32 34.674 46.99 72.043 63 96.062.02.029.042.096.064.125.045.064.144.185.189.25l2.812-1.5c-10.685-26.697-28.285-68.26-46.44-106.437-18.155-38.179-36.666-72.792-49.937-86.063-16.566-16.566-56.5-32.375-96.5-48.375s-80.066-32.19-95.5-47.625c-6.45-6.45-14.409-15.11-23.063-24.875 12.926-14.779 18.51-27.552 8.125-37.938-16-26.666-51.2-83.2-64-96-5.6-5.6-11.42-7.345-16.625-7.062zm372.688 436.75c.201.487.488 1.079.687 1.563-.291-.44-.644-.995-.937-1.438.023-.012.06.001.064 0 .002 0 .185-.06.188-.064.002-.001-.011-.038 0-.064z", - ], -}; - -const faPeertube = { - prefix: "fax", - iconName: "peertube", - icon: [ - 512, - 512, - [], - null, - "M55.8 25V255L255 140zM255 140v230l199.2-115zM55.8 255v230L255 370z", - ], -}; - -const faGitea = { - prefix: "fax", - iconName: "gitea", - icon: [ - 512, - 512, - [], - null, - "M92.7 114.5c-5.2 0-11 .4-17.6 1.9c-7 1.4-26.8 5.9-43 21.5C-3.9 169.9 5.3 221 6.4 228.6c1.4 9.4 5.5 35.4 25.4 58c36.6 44.9 115.5 43.8 115.5 43.8s9.7 23.1 24.5 44.4c20 26.5 40.6 47.1 60.6 49.6c50.4 0 151.1-.1 151.1-.1s9.6 .1 22.6-8.2c11.2-6.8 21.2-18.7 21.2-18.7s10.3-11 24.7-36.2c4.4-7.8 8.1-15.3 11.3-22.4c0 0 44.2-93.7 44.2-184.9c-.9-27.6-7.7-32.5-9.3-34.1c-3.3-3.3-7.7-3.2-7.7-3.2s-93.8 5.3-142.3 6.4c-10.6 .2-21.2 .5-31.7 .6l0 93.8c-4.4-2.1-8.9-4.2-13.3-6.3c0-29.1-.1-87.4-.1-87.4c-23.2 .3-71.4-1.8-71.4-1.8s-113.1-5.7-125.4-6.8c-3.9-.2-8.4-.7-13.6-.7zm9.8 38.4s5.7 47.5 12.6 75.4c5.8 23.4 19.8 62.2 19.8 62.2s-20.9-2.5-34.4-7.3c-20.7-6.8-29.5-15-29.5-15s-15.3-10.7-23-31.8c-13.2-35.4-1.1-57-1.1-57s6.7-18 30.8-24c11-3 24.8-2.5 24.8-2.5zm171 53.5c5.9-.4 11.9 2.6 11.9 2.6l18.2 8.8c-3.7 7.5-7.4 15-11.1 22.5c-5.4-.1-10.3 2.8-12.9 7.5c-2.7 5-2.2 11.3 1.5 15.8l-19.7 40.3c-6.6 .1-12.3 4.6-13.8 11s1.6 13 7.3 16c6.2 3.2 14 1.4 18.2-4.3c4.1-5.7 3.4-13.5-1.4-18.5L290.8 269c1.2 .1 3 .2 5-.4c3.3-.7 5.7-2.9 5.7-2.9c3.4 1.4 6.9 3 10.6 4.9c3.8 1.9 7.4 3.9 10.7 5.8c.7 .4 1.4 .9 2.2 1.5c1.3 1 2.7 2.5 3.8 4.4c1.5 4.4-1.5 11.9-1.5 11.9c-1.8 6.1-14.7 32.5-14.7 32.5c-6.5-.2-12.2 4-14.2 10c-2.1 6.5 .9 13.8 7.1 17s13.9 1.4 18-4.2c4-5.4 3.7-13-.9-18.1c1.5-3 3-5.9 4.5-9c4-8.3 10.8-24.3 10.8-24.3c.7-1.4 4.6-8.2 2.2-17c-2-9.1-10.1-13.4-10.1-13.4c-9.8-6.3-23.4-12.2-23.4-12.2s0-3.3-.9-5.7c-.9-2.5-2.2-4.1-3.1-5c3.6-7.4 7.2-14.8 10.8-22.2L373.9 252s10.1 4.6 12.2 13c1.5 5.9-.4 11.2-1.4 13.8c-5 12.3-44 90.5-44 90.5s-4.9 11.6-15.7 12.3c-4.6 .3-8.2-1-8.2-1s-.2-.1-4.2-1.7l-90.3-44s-8.7-4.6-10.2-12.5c-1.8-6.5 2.2-14.5 2.2-14.5l43.4-89.5s3.8-7.8 9.8-10.4c.5-.2 1.8-.8 3.6-1.2c.8-.2 1.6-.3 2.5-.4z", - ], -}; - -const faNextcloud = { - prefix: "fax", - iconName: "nextcloud", - icon: [ - 733, - 512, - [], - null, - "m365.6 114.3c-65 0-120.1 44.1-137.2 103.8c-14.8-31.7-47-53.8-84-53.8c-50.9 0-92.8 41.9-92.8 92.8s41.9 92.8 92.8 92.8c37 0 69.2-22.2 84-53.9c17.1 59.7 72.2 103.8 137.2 103.8c64.5 0 119.3-43.4 136.8-102.4c15.1 31 46.9 52.5 83.4 52.5c50.9 0 92.8-41.9 92.8-92.8s-41.9-92.8-92.8-92.8c-36.5 0-68.3 21.6-83.4 52.5c-17.1-59-71.9-102.4-136.4-102.4zm0 54.5c49.1 0 88.3 39.2 88.3 88.2s-39.2 88.3-88.3 88.3s-88.2-39.2-88.2-88.3s39.2-88.2 88.2-88.2zm-221.2 49.9c21.5 0 38.3 16.8 38.3 38.3s-16.9 38.3-38.3 38.3s-38.3-16.9-38.3-38.3s16.8-38.3 38.3-38.3zm441.4 0c21.5 0 38.3 16.8 38.3 38.3s-16.9 38.3-38.3 38.3s-38.3-16.9-38.3-38.3s16.8-38.3 38.3-38.3z", - ], -}; - -library.add( - faBook, - faBrowser, - faBullSperm, - faComment, - faCowbell, - faDiscord, - faEllipsis, - faFileAlt, - faFileSignature, - faGitea, - faGithub, - faGitlab, - faGlobe, - faGolang, - faGraduationCap, - faHome, - faHtml5, - faNextcloud, - faNotebook, - faOrcid, - faPeertube, - faPodium, - faPresentation, - faTag, - faScaleBalanced, - faStackOverflow, - faSteam, - faUniversity, - faUser, - faUserAstronaut, - faVideo, - faVimeo, - faW -); - -dom.i2svg(); diff --git a/assets/scripts/phone-masking.js b/assets/scripts/phone-masking.js index 1edbd77..fd2d427 100644 --- a/assets/scripts/phone-masking.js +++ b/assets/scripts/phone-masking.js @@ -1 +1,15 @@ -$("#phone").mask("(000) 000-0000"); +// Built by perplexity.ai +function maskPhoneNumber(input) { + input.addEventListener("input", function (e) { + var x = e.target.value + .replace(/\D/g, "") + .match(/(\d{0,3})(\d{0,3})(\d{0,4})/); + e.target.value = !x[2] + ? x[1] + : "(" + x[1] + ") " + x[2] + (x[3] ? "-" + x[3] : ""); + }); +} + +// Usage +var phoneInput = document.getElementById("phone"); +maskPhoneNumber(phoneInput); diff --git a/assets/scripts/pro-duotone-svg-icons/index.mjs b/assets/scripts/pro-duotone-svg-icons/index.mjs deleted file mode 100644 index 77e9307..0000000 Binary files a/assets/scripts/pro-duotone-svg-icons/index.mjs and /dev/null differ diff --git a/assets/scripts/scroll-effect.js b/assets/scripts/scroll-effect.js deleted file mode 100644 index 42a4af8..0000000 --- a/assets/scripts/scroll-effect.js +++ /dev/null @@ -1,5 +0,0 @@ -$(window).scroll(function (e) { - oVal = $(window).scrollTop() / 170; - $(".blur").css("opacity", oVal); -}); -$("#motto").fitText(); diff --git a/assets/scripts/tooltip-enable.js b/assets/scripts/tooltip-enable.js deleted file mode 100644 index 7009708..0000000 --- a/assets/scripts/tooltip-enable.js +++ /dev/null @@ -1,6 +0,0 @@ -var tooltipTriggerList = [].slice.call( - document.querySelectorAll('[data-bs-toggle="tooltip"]') -); -var tooltipList = tooltipTriggerList.map(function (tooltipTriggerEl) { - return new bootstrap.Tooltip(tooltipTriggerEl); -}); diff --git a/assets/styles/millironx.css b/assets/styles/millironx.css new file mode 100644 index 0000000..00ad31e --- /dev/null +++ b/assets/styles/millironx.css @@ -0,0 +1,839 @@ +:root { + /* + Color schemes + */ + color-scheme: light dark; + + --ear-tag-red-1: oklch(97.5% 0.016 35.7); + --ear-tag-red-2: oklch(95.9% 0.027 37.7); + --ear-tag-red-3: oklch(91.8% 0.055 33.4); + --ear-tag-red-4: oklch(84% 0.092 29.8); + --ear-tag-red-5: oklch(80% 0.123 29.8); + --ear-tag-red-6: oklch(71% 0.146 29.8); + --ear-tag-red-7: oklch(66% 0.154 29.8); + --ear-tag-red-8: oklch(58% 0.162 29.8); + --ear-tag-red-9: oklch(53% 0.154 29.8); + --ear-tag-red-10: oklch(49% 0.146 29.8); + --ear-tag-red-11: oklch(42% 0.131 29.8); + --ear-tag-red-12: oklch(35% 0.115 29.8); + --ear-tag-red-13: oklch(27% 0.092 29.8); + --ear-tag-red-14: oklch(20% 0.07 29.8); + --ear-tag-red-15: oklch(16% 0.054 29.8); + --ear-tag-red-16: oklch(10% 0.039 29.8); + --ear-tag-red: var(--ear-tag-red-12); + + --swiss-brown-1: oklch(98% 0.011 67.7); + --swiss-brown-2: oklch(97% 0.023 67.7); + --swiss-brown-3: oklch(93% 0.039 67.7); + --swiss-brown-4: oklch(84% 0.046 67.7); + --swiss-brown-5: oklch(80% 0.061 67.7); + --swiss-brown-6: oklch(71% 0.072 67.7); + --swiss-brown-7: oklch(66% 0.076 67.7); + --swiss-brown-8: oklch(58% 0.08 67.7); + --swiss-brown-9: oklch(53% 0.076 67.7); + --swiss-brown-10: oklch(49% 0.072 67.7); + --swiss-brown-11: oklch(42% 0.065 67.7); + --swiss-brown-12: oklch(35% 0.057 67.7); + --swiss-brown-13: oklch(27% 0.046 67.7); + --swiss-brown-14: oklch(20% 0.035 67.7); + --swiss-brown-15: oklch(16% 0.027 67.7); + --swiss-brown-16: oklch(10% 0.019 67.7); + --swiss-brown: var(--swiss-brown-12); + + --prickly-pear-yellow-1: oklch(98% 0.017 94.5); + --prickly-pear-yellow-2: oklch(97% 0.035 94.5); + --prickly-pear-yellow-3: oklch(93% 0.059 94.5); + --prickly-pear-yellow-4: oklch(84% 0.07 94.5); + --prickly-pear-yellow-5: oklch(80% 0.093 94.5); + --prickly-pear-yellow-6: oklch(71% 0.11 94.5); + --prickly-pear-yellow-7: oklch(66% 0.116 94.5); + --prickly-pear-yellow-8: oklch(58% 0.122 94.5); + --prickly-pear-yellow-9: oklch(53% 0.116 94.5); + --prickly-pear-yellow-10: oklch(49% 0.11 94.5); + --prickly-pear-yellow-11: oklch(42% 0.099 94.5); + --prickly-pear-yellow-12: oklch(35% 0.083 93.6); + --prickly-pear-yellow-13: oklch(27.1% 0.064 92.8); + --prickly-pear-yellow-14: oklch(20% 0.047 92.4); + --prickly-pear-yellow-15: oklch(16% 0.038 93.3); + --prickly-pear-yellow-16: oklch(10% 0.024 89.7); + --prickly-pear-yellow: var(--prickly-pear-yellow-7); + + --hayyard-green-1: oklch(98% 0.014 135); + --hayyard-green-2: oklch(97% 0.03 135); + --hayyard-green-3: oklch(93% 0.049 135); + --hayyard-green-4: oklch(84% 0.058 135); + --hayyard-green-5: oklch(80% 0.078 135); + --hayyard-green-6: oklch(71% 0.092 135); + --hayyard-green-7: oklch(66% 0.097 135); + --hayyard-green-8: oklch(58% 0.103 135); + --hayyard-green-9: oklch(53% 0.097 135); + --hayyard-green-10: oklch(49% 0.092 135); + --hayyard-green-11: oklch(42% 0.083 135); + --hayyard-green-12: oklch(35% 0.073 135); + --hayyard-green-13: oklch(27% 0.058 135); + --hayyard-green-14: oklch(20% 0.044 135); + --hayyard-green-15: oklch(16% 0.034 135); + --hayyard-green-16: oklch(10% 0.025 135); + --hayyard-green: var(--hayyard-green-11); + + --flaming-gorge-blue-1: oklch(98% 0.012 241); + --flaming-gorge-blue-2: oklch(96.8% 0.021 230); + --flaming-gorge-blue-3: oklch(92.9% 0.041 242); + --flaming-gorge-blue-4: oklch(84% 0.051 245); + --flaming-gorge-blue-5: oklch(80% 0.069 245); + --flaming-gorge-blue-6: oklch(71% 0.081 245); + --flaming-gorge-blue-7: oklch(66% 0.086 245); + --flaming-gorge-blue-8: oklch(58% 0.09 245); + --flaming-gorge-blue-9: oklch(53% 0.086 245); + --flaming-gorge-blue-10: oklch(49% 0.081 245); + --flaming-gorge-blue-11: oklch(42% 0.073 245); + --flaming-gorge-blue-12: oklch(35% 0.064 245); + --flaming-gorge-blue-13: oklch(27% 0.051 245); + --flaming-gorge-blue-14: oklch(20% 0.039 245); + --flaming-gorge-blue-15: oklch(16% 0.03 245); + --flaming-gorge-blue-16: oklch(10% 0.022 245); + --flaming-gorge-blue: var(--flaming-gorge-blue-12); + + --coeurdalene-purple-1: oklch(97.8% 0.016 311); + --coeurdalene-purple-2: oklch(96.5% 0.026 314); + --coeurdalene-purple-3: oklch(92.5% 0.052 308); + --coeurdalene-purple-4: oklch(84% 0.097 302); + --coeurdalene-purple-5: oklch(80% 0.129 302); + --coeurdalene-purple-6: oklch(71% 0.153 302); + --coeurdalene-purple-7: oklch(66% 0.162 302); + --coeurdalene-purple-8: oklch(58% 0.17 302); + --coeurdalene-purple-9: oklch(53% 0.162 302); + --coeurdalene-purple-10: oklch(49% 0.153 302); + --coeurdalene-purple-11: oklch(42% 0.138 302); + --coeurdalene-purple-12: oklch(35% 0.121 302); + --coeurdalene-purple-13: oklch(27% 0.097 302); + --coeurdalene-purple-14: oklch(20% 0.073 302); + --coeurdalene-purple-15: oklch(16% 0.056 302); + --coeurdalene-purple-16: oklch(10% 0.041 302); + --coeurdalene-purple: var(--coeurdalene-purple-13); + + --eclipse-1: oklch(98% 0 0); + --eclipse-2: oklch(97% 0 0); + --eclipse-3: oklch(93% 0 0); + --eclipse-4: oklch(84% 0 0); + --eclipse-5: oklch(80% 0 0); + --eclipse-6: oklch(71% 0 0); + --eclipse-7: oklch(66% 0 0); + --eclipse-8: oklch(58% 0 0); + --eclipse-9: oklch(53% 0 0); + --eclipse-10: oklch(49% 0 0); + --eclipse-11: oklch(42% 0 0); + --eclipse-12: oklch(35% 0 0); + --eclipse-13: oklch(27% 0 0); + --eclipse-14: oklch(20% 0 0); + --eclipse-15: oklch(16% 0 0); + --eclipse-16: oklch(10% 0 0); + --eclipse: var(--eclipse-12); + + --cowhide-1: oklch(98% 0.009 77.5); + --cowhide-2: oklch(97% 0.018 77.5); + --cowhide-3: oklch(93% 0.029 77.5); + --cowhide-4: oklch(84% 0.034 77.5); + --cowhide-5: oklch(80% 0.046 77.5); + --cowhide-6: oklch(71% 0.054 77.5); + --cowhide-7: oklch(66% 0.057 77.5); + --cowhide-8: oklch(58% 0.06 77.5); + --cowhide-9: oklch(53% 0.057 77.5); + --cowhide-10: oklch(49% 0.054 77.5); + --cowhide-11: oklch(42% 0.049 77.5); + --cowhide-12: oklch(35% 0.043 77.5); + --cowhide-13: oklch(27% 0.034 77.5); + --cowhide-14: oklch(20% 0.026 77.5); + --cowhide-15: oklch(16% 0.02 77.5); + --cowhide-16: oklch(10% 0.015 77.5); + --cowhide: var(--cowhide-3); + + --body-background: light-dark(var(--cowhide-3), var(--eclipse-11)); + --link-color: light-dark( + var(--flaming-gorge-blue), + var(--coeurdalene-purple-4) + ); + --nav-button-text: light-dark(var(--eclipse-2), var(--cowhide-12)); + --nav-button-background: light-dark(var(--eclipse-11), var(--cowhide-2)); + --nav-button-background-hover: light-dark( + var(--eclipse-13), + var(--cowhide-4) + ); + --nav-button-background-active: light-dark( + var(--eclipse-14), + var(--cowhide-5) + ); + --container-border: light-dark(var(--swiss-brown-6), var(--eclipse-16)); + --container-background: light-dark(var(--swiss-brown-4), var(--eclipse-12)); + --container-border-alt: light-dark(var(--eclipse-16), var(--swiss-brown-6)); + --container-background-alt: light-dark( + var(--eclipse-12), + var(--swiss-brown-4) + ); + --motto-background: rgba(0, 0, 0, 0.66); + --page-button-text: var(--prickly-pear-yellow-1); + --page-button-background: var(--prickly-pear-yellow-8); + --page-button-background-hover: var(--prickly-pear-yellow-10); + --page-button-background-active: var(--prickly-pear-yellow-12); + --page-button-background-disabled: var(--prickly-pear-yellow-6); + --page-button-text-disabled: var(--eclipse-7); + + /* + Fonts + */ + --font-family-antique: Superclarendon, "Bookman Old Style", "URW Bookman", + "URW Bookman L", "Georgia Pro", Georgia, serif; + --font-family-slab-serif: Rockwell, "Rockwell Nova", "Roboto Slab", + "DejaVu Serif", "Sitka Small", serif; + --font-family-transitional: Charter, "Bitstream Charter", "Sitka Text", + Cambria, serif; + --font-family-system-ui: system-ui, sans-serif; + --font-family-monospace: "Nimbus Mono PS", "Courier New", monospace; +} + +/* + Default element styles (for small screens) +*/ + +html { + background-color: var(--body-background); + font-family: var(--font-family-slab-serif); +} + +body { + display: flex; + flex-direction: column; + min-height: 98vh; + margin: 0 8px; + align-items: center; +} + +.container { + max-width: min(60rem, 100vw - 2rem); +} + +.footer-inner { + width: min(60rem, 100vw - 2rem); + display: flex; + justify-content: space-between; + align-items: center; + flex-shrink: 0; +} + +a { + color: var(--link-color); +} + +header { + display: flex; + justify-content: space-evenly; + align-items: center; +} + +nav { + display: flex; + flex-direction: row; + overflow: scroll; + padding-bottom: 1rem; + position: sticky; + top: 0; +} + +nav a { + color: var(--nav-button-text); + background-color: var(--nav-button-background); + border-radius: 0.05rem; + border-style: outset; + border-width: 0.2rem; + border-color: var(--nav-button-background); + min-width: 7.5rem; + max-width: 7.5rem; + display: flex; + justify-content: space-between; + align-items: center; + margin: 0.2rem; + text-decoration: none; + padding: 0 0.2rem; + font-family: var(--font-family-system-ui); +} + +nav a.active { + background-color: var(--nav-button-background-active); +} + +nav a:active { + border-style: inset; +} + +nav a:hover { + background-color: var(--nav-button-background-hover); +} + +main { + display: flex; + flex-direction: column; +} + +article p, +.character-dialog-text, +article li { + font-family: var(--font-family-transitional); + font-size: 1.15rem; + text-justify: inter-word; + text-align: justify; + hyphens: auto; +} + +article > p { + text-indent: 2ch; + line-height: 1.5em; +} + +article h1 + p, +article h2 + p, +article h3 + p, +article h4 + p, +article h5 + p, +article h6 + p { + text-indent: 0; +} + +.footnotes p { + font-size: smaller; +} + +figure { + border-color: var(--container-border); + border-width: 1.5pt; + border-style: inset; + border-radius: 2.5pt; + background-color: var(--container-background); + padding: 1.25pt; +} + +figure:has(blockquote) { + background: linear-gradient( + to right, + var(--container-border), + var(--container-background) + ); + border: none; + border-radius: 0; + border-left: 6px solid black; + padding: 0.25em 1em; +} + +figure:has(blockquote) > blockquote { + margin: 0; +} + +figure:has(blockquote) > figcaption::before { + content: "\2014 \00A0"; +} + +figure:has(blockquote) > figcaption { + margin-top: -1em; + margin-bottom: 1em; + font-size: 80%; +} + +footer { + display: flex; + flex-direction: column; + align-items: center; + background-color: var(--container-background); + margin: 0 0 -1em -1em; + width: calc(100% - 1em); + padding: 0.25em 1.25em; + font-size: smaller; +} + +form { + margin: 1rem; +} + +fieldset { + padding: 1rem; +} + +input, +select, +textarea { + width: 100%; + margin-bottom: 0.5rem; +} + +input:invalid, +select:invalid, +textarea:invalid { + border-bottom-width: 2px; + border-bottom-color: var(--ear-tag-red); +} + +code { + font-family: var(--font-family-monospace); +} + +/* + abbr element "tooltip" for mobile + heavily modified from https://bitsofco.de/making-abbr-work-for-touchscreen-keyboard-mouse/ +*/ +abbr[title]:focus::after { + content: attr(title); + background-color: #1e1e1e; + color: #fff; + border-radius: 0.125em; + box-shadow: 1px 1px 5px 0 rgba(0, 0, 0, 0.4); + font-size: smaller; + padding: 0.5em; + display: block; +} + +/* + Container-type helper classes +*/ +.row { + display: flex; + flex-direction: column; + width: 100%; +} + +.motto-wrapper { + display: block; + flex: 1 0 30vh; + margin-bottom: 1em; +} + +.motto { + position: relative; + display: grid; + place-items: center; + text-align: center; + color: #fff; + font-weight: 600; + text-shadow: 0 0 10px rgba(0, 0, 0, 0.33); + width: 100%; + height: 100%; + padding: 0 0 0.5em 0; + border-radius: 0.25rem; + z-index: 10; +} + +.motto::before { + content: " "; + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + box-sizing: border-box; + background-size: cover; + background-position: 50% 50%; +} + +.motto-inside { + position: relative; + max-width: 95%; + display: grid; + place-items: center; + text-align: center; +} + +.motto .motto-inside h1 { + background-color: var(--motto-background); + padding: 0.5rem; +} + +.card { + background-color: var(--container-background); + border-color: var(--container-border); + border-width: 1.5pt; + border-radius: 0.1rem; + border-style: outset; + margin: 1rem 0; + padding: 0.5rem; + padding-top: 0; + display: flex; + flex-direction: column; +} + +.card-content { + display: flex; + flex-direction: column; + flex-grow: 1; +} + +.card-header { + display: flex; + flex-direction: row; + justify-content: space-between; + flex-grow: 1; +} + +.card-link { + white-space: nowrap; + display: inline-flex; + gap: 0.375rem; + align-items: center; + text-underline-offset: 0.25em; + backface-visibility: hidden; + margin: 0.1em 0.25em; + padding: 0.33em; + padding-right: 0.45em; +} + +.card-body { + margin-top: 0.33em; +} + +.category-button { + display: grid; + align-items: center; + justify-items: center; + color: white; + background-color: var(--ear-tag-red); + border-radius: 0.5em; + padding: 1em; + margin: 1em; + height: 2em; + aspect-ratio: 1 / 1; +} + +.card-title > a { + color: inherit; +} + +.img-thumbnail { + width: 100%; + height: auto; + margin-top: 0.5rem; +} + +.thumb-icon-wrapper { + margin-top: 1rem; + display: flex; + justify-content: center; + align-content: center; +} + +.thumb-icon-badge { + font-size: xx-large; + justify-self: center; + align-self: center; + padding: 1.5rem 3rem; + border-radius: 3rem; + background-color: var(--ear-tag-red); + color: white; +} + +.fa-container svg { + overflow: visible; + box-sizing: content-box; + display: inline-block; + height: 1em; + width: 1.25em; + vertical-align: -0.125em; +} + +.fa-container svg path { + fill: currentColor; +} + +.account-bucket { + display: grid; + grid-template-columns: 3em 1em 1fr; + background-color: var(--container-background-alt); + padding: 1em 0; + border-radius: 0.5em; + border-color: var(--container-border-alt); + border-style: solid; + color: light-dark(white, black); + margin: 1em 0; + align-items: center; +} + +.account-bucket h3 { + align-self: center; + writing-mode: sideways-lr; +} + +.account-bucket details { + grid-column: 3; +} + +.account-bucket .crypto-list { + grid-column: 3; + max-width: 100%; +} + +.account-list { + display: flex; + justify-content: space-between; + flex-wrap: wrap; + width: calc(100% - 1.5em); +} + +.account-bucket .account-list { + grid-column: 3; +} + +.account-list a { + font-size: xx-large; + text-decoration: none; + color: inherit; + padding: 0.5em; +} + +.account-list a:hover { + background-color: var(--container-background); + border-color: var(--container-border); + border-width: 2.5px; + border-radius: 0.5em; + border-style: solid; + padding: calc(0.5em - 2.5px); +} + +figcaption .mono { + color: light-dark(black, white); + overflow-wrap: anywhere; +} + +.crypto-list details { + max-width: 100%; +} + +.character-dialog { + display: grid; + width: calc(100% - 1rem); + grid-template-columns: 5rem 1fr; + grid-template-rows: auto auto; + gap: 1em; + margin: 0.5rem; +} + +.character-avatar { + display: grid; + max-width: 100%; + grid-row: 1 / span 2; + grid-column: 1; + align-self: start; + align-items: center; + justify-items: center; + min-width: 5rem; + min-height: 5rem; + border-radius: 5rem; + align-items: center; + border-style: solid; + border-color: var(--nav-button-background-hover); + background-color: var(--cowhide-2); +} + +.character-avatar > img { + max-width: 4rem; + max-height: 4rem; +} + +.character-dialog-bubble { + display: grid; + grid-template-rows: auto auto; + align-self: start; + border-radius: 0.5em; + border-width: 0.2rem; + border-color: var(--nav-button-background); + border-style: outset; + row-gap: 0.5rem; + padding: 0.5rem; + background-color: var(--container-border); + min-height: 5rem; +} + +.character-dialog-title { + font-weight: bolder; +} + +/* + Helper classes +*/ +.font-small-caps { + font-variant-caps: small-caps; +} + +.img-fluid { + max-width: 100%; + height: auto; + display: grid; + align-items: center; + justify-items: center; +} + +.float-left { + float: none; + max-width: 100%; +} + +.float-right { + float: none; + max-width: 100%; +} + +.pagination { + display: flex; + justify-content: center; + gap: 0.5em; + padding-left: 0; +} + +.pagination li { + list-style-type: none; + color: var(--nav-button-text); +} + +.pagination li a { + color: var(--page-button-text); + background-color: var(--page-button-background); + border-radius: 0.05rem; + border-style: outset; + border-width: 0.2rem; + border-color: var(--page-button-background); + width: 2rem; + max-width: 1.8vw; + aspect-ratio: 1 / 1; + display: flex; + justify-content: center; + align-items: center; + margin: 0.2rem; + text-decoration: none; + padding: 0 0.2rem; + font-family: var(--font-family-system-ui); +} + +.pagination li a:hover { + background-color: var(--page-button-background-hover); +} + +.pagination li.active a { + background-color: var(--page-button-background-active); +} + +.pagination li.disabled a { + cursor: not-allowed; + background-color: var(--page-button-background-disabled); + color: var(--page-button-text-disabled); + border-style: solid; +} + +.mono { + font-family: var(--font-family-monospace); + font-weight: 600; +} + +.bolder { + font-weight: bolder; + background-color: rgba(0, 0, 0, 0.33); + border-radius: 0.25em; +} + +/* Specific elements */ +#content { + flex: 1 0 max-content; +} + +/* + Desktop screen size adjustments +*/ +@media (min-width: 768px) { + /* + Default element styles + */ + nav { + flex-direction: column; + padding-right: 1rem; + padding-bottom: 0; + + /* + Workaround for Chrome always showing scrollbar even when scrolling not needed + */ + -ms-overflow-style: none; + scrollbar-width: none; + } + + /* + Continued Chrome workaround + */ + nav::-webkit-scrollbar { + display: none; + } + + main { + width: calc(100% - 10rem); + } + + /* + Container-type helper classes + */ + .row { + flex-direction: row; + } + + .person-profile { + position: sticky; + top: 0; + width: 300px; + min-width: 20vw; + max-width: 30vw; + margin-bottom: 5vh; + } + + /* + Helper classes + */ + .float-left { + float: left; + max-width: 50%; + } + + .float-right { + float: right; + max-width: 50%; + } + + .card { + flex-direction: row; + } + + .img-thumbnail { + margin-right: 1rem; + } + + .card-thumbnail { + width: 20vw; + flex-shrink: 0; + } + + .card-thumbnail:not( + :has(~ .card-content > .card-header > .card-title > .dt-published) + ) { + width: 10vw; + } + + .card-content { + margin-left: 1rem; + } + + /* + Clearfix implementation + */ + h1::before, + h2::before, + h3::before, + h4::before, + h5::before, + h6::before, + blockquote::before { + content: " "; /* Older browser do not support empty content */ + visibility: hidden; + display: block; + height: 0; + clear: both; + } +} /* end @media */ diff --git a/assets/styles/mix-twbs.scss b/assets/styles/mix-twbs.scss index 5ffbaba..536f92e 100644 --- a/assets/styles/mix-twbs.scss +++ b/assets/styles/mix-twbs.scss @@ -48,10 +48,6 @@ $peek-height: 25rem; background-position: center center; } -.blur { - opacity: 0; -} - .list-main { position: relative; background-color: #fff; diff --git a/assets/styles/scrolling-header.css b/assets/styles/scrolling-header.css new file mode 100644 index 0000000..acc8a4b --- /dev/null +++ b/assets/styles/scrolling-header.css @@ -0,0 +1,68 @@ +@media (prefers-reduced-motion: no-preference) { + @supports (animation-timeline: scroll()) and (animation-range: 0 50vh) { + @keyframes sticky-header { + from { + flex-basis: 30vh; + } + + to { + flex-basis: 0; + } + } + + .motto-wrapper { + position: sticky; + top: 0; + z-index: 100; + + animation: sticky-header linear forwards; + animation-timeline: scroll(); + animation-range: 0 30vh; + + contain: content; + } + + @keyframes blurry-header { + from { + filter: blur(0); + } + + to { + filter: blur(3.5px); + } + } + + .motto::before { + animation: blurry-header linear forwards; + animation-timeline: scroll(); + animation-range: 0 30vh; + } + + @keyframes transparent-text-bg { + from { + background-color: var(--motto-background); + text-shadow: 0 0 10px rgba(0, 0, 0, 0.33); + } + to { + background-color: rgba(0, 0, 0, 0); + text-shadow: 0 0 10px rgba(0, 0, 0, 1); + } + } + .motto-inside h1 { + animation: transparent-text-bg linear forwards; + animation-timeline: scroll(); + animation-range: 0 30vh; + } + + .motto-inside h1 small { + display: block; + font-size: calc(1vh + 1vw); + line-height: calc(1vh + 1vw); + } + + main section { + margin: 0 0.25em; + contain: content; + } + } /* end @supports */ +} /* end @media */ diff --git a/config.toml b/config.toml index 89a2f66..8a730b3 100644 --- a/config.toml +++ b/config.toml @@ -1,7 +1,9 @@ baseURL = "https://millironx.com" languageCode = "en-us" -title = "MillironX" -paginate = 5 +title = "Milliron X" + +[pagination] +pagerSize = 5 [build] writeStats = true @@ -9,74 +11,47 @@ writeStats = true [Params] cardImage = "saddles" motto = "" +images = ["saddles.jpg"] +categories = [] [taxonomies] people = "people" tag = "tags" category = "categories" -[module] +[mediaTypes] -[[module.mounts]] -source = "static" -target = "static" +[mediaTypes."application/atom+xml"] +suffixes = ["xml"] -[[module.mounts]] -source = "assets/graphics" -target = "assets/graphics" +[outputs] +home = ["atom", "html", "manifest"] +page = ["html"] +section = ["html", "atom"] +term = ["html", "atom"] -[[module.mounts]] -source = "assets/images" -target = "assets/images" +[outputFormats] -[[module.mounts]] -source = "assets/scripts" -target = "assets/scripts" +[outputFormats.atom] +mediaType = "application/atom+xml" +baseName = "feed" -[[module.mounts]] -source = "assets/styles" -target = "assets/styles" +[outputFormats.manifest] +name = "manifest" +baseName = "manifest" +mediaType = "application/json" +notAlternative = "true" -[[modules.mounts]] -source = "assets/scripts/custom" -target = "assets/scripts/custom" +[markup] -[[module.mounts]] -source = "./node_modules/@fortawesome/fontawesome-pro/js" -target = "assets/scripts/fontawesome" +[markup.goldmark] -[[module.mounts]] -source = "./node_modules/@popperjs/core/dist/umd" -target = "assets/scripts/popper" +[markup.goldmark.parser] -[[module.mounts]] -source = "./node_modules/bootstrap/scss" -target = "assets/styles/bootstrap" +[markup.goldmark.parser.attribute] +block = true -[[module.mounts]] -source = "./node_modules/bootswatch/dist/" -target = "assets/styles/bootswatch" +[markup.goldmark.renderHooks] -[[module.mounts]] -source = "./node_modules/@openfonts/nunito-sans_all" -target = "static/fonts/nunito-sans" - -[[module.mounts]] -source = "./node_modules/bootstrap/dist/js" -target = "assets/scripts/bootstrap" - -[[module.mounts]] -source = "./node_modules/fittext.js" -target = "assets/scripts/fittext" - -[[module.mounts]] -source = "./node_modules/jquery/dist" -target = "assets/scripts/jquery" - -[[module.mounts]] -source = "./node_modules/jquery-mask-plugin/dist" -target = "assets/scripts/jquery-mask-plugin" - -[[module.mounts]] -source = "./node_modules/masonry-layout/dist" -target = "assets/scripts/masonry" +[markup.goldmark.renderHooks.link] +enableDefault = true diff --git a/content/_index.html b/content/_index.html deleted file mode 100644 index 66a7a7c..0000000 --- a/content/_index.html +++ /dev/null @@ -1,171 +0,0 @@ ---- -title: Home -cardImage: charolette -motto: My name is Thomas Christensen
I am Milliron X -description: The homepage of Thomas A. Christensen II -layout: _default/list -menu: - main: - params: - prefix: fad - icon: fa-home - weight: -1000 ---- - -

What is a "Milliron X"?

- -

- It's a - cattle brand, - of course! My cattle brand! -

- -

- The milliron is the bar with a bend in the middle. It does not - represent anything physical or textual per se, and is therefore a - rather unique element in cattle brands. Millirons are difficult to modify into - another brand, and provide a guarantee of authentic ownership. -

- -

- X is the letter of mystery and mystique. For nerds, it's the - unknown in any algebra problem. Ranchers and cowboys will associate it with - big names like the "Bar X" and the "Double X." In either case, it lends itself - to a sense of withholding, prestige, and power. -

- -

- Together, these two symbols represent the qualities I strive for in each of my - works: authenticity, originality, power, depth, and prestige. -

- -

Who am I?

- -{{% imgproc me-and-lady Resize "768x" "float-md-end w-md-50 p-3" %}} -Image courtesy [Guy McCutcheon Photography](https://www.guymccutcheon.com/) -{{% /imgproc %}} - - -

I am

- - - -

- I've got a soft spot for Brown Swiss dairy cows (just in case you couldn't - tell by the pictures), and am sometimes called "one of those crazy, Wyoming - dairy cow people." I love anything to do with cattle or technology, but - especially anything to do with both of them. -

- -

- - Christian, American, Convervative, Pro-gun, Heterosexual - any questions? - -

- -

Where am I?

- -{{% imgproc wy-in-ks Resize "768x" "float-md-start w-md-50 p-3" / %}} - - -

- I am a Wyomingite sojurning in Kansas. That ought to lead to some interesting - stories. -

- -Around the web you can find me at (in order of subjective importance) - - - -
- -
-
-

- This list is intended to verify my identity on other sites. Please do - not use it as fodder to try and "follow" me on each of these - platforms. I stand with RMS: -

-
-
-

- Facebook is a bad place for a person to be. When people find us on - Facebook, we lead them away from Facebook and then talk with them - elsewhere. -

-
- -
-

- I typically don't respond to inqueries made on these platforms. Please use - my contact form, instead. -

-
-
diff --git a/content/_index.md b/content/_index.md new file mode 100644 index 0000000..1cfe790 --- /dev/null +++ b/content/_index.md @@ -0,0 +1,30 @@ +--- +cardImage: charolette +cardImageDescription: She almost looks like she's in her native country again. +motto: My name is Thomas Christensen
I am Milliron X +description: The homepage of Thomas A. Christensen II +menu: + main: + name: Home + params: + icon: home + weight: -1000 +--- + +## What is a "Milliron X"? + +It's a [cattle brand](https://en.wikipedia.org/wiki/Livestock_branding), of +course! My cattle brand! + +The {{< dfn >}}milliron{{< /dfn >}} is the bar with a bend in the middle. It +does not represent anything physical or textual _per se_, and is therefore a +rather unique element in cattle brands. Millirons are difficult to modify into +another brand, and provide a guarantee of authentic ownership. + +{{< dfn >}}X{{< /dfn >}} is the letter of mystery and mystique. For nerds, it's +the unknown in any algebra problem. Ranchers and cowboys will associate it with +big names like the "Bar X" and the "Double X." In either case, it lends itself +to a sense of withholding, prestige, and power. + +Together, these two symbols represent the qualities I strive for in each of my +works: authenticity, originality, power, depth, and prestige. diff --git a/content/academia/_index.md b/content/academia/_index.md index 6eb6f79..ea2eb55 100644 --- a/content/academia/_index.md +++ b/content/academia/_index.md @@ -2,24 +2,27 @@ title: Academic Publications and Presentations motto: Publications and Presentations cardImage: library -decription: A list of my academic publications +cardImageDescription: + Personally, I preferred the Owen Library in Pullman seven miles west +description: A list of my academic publications menu: main: name: Academia params: - prefix: fad - icon: fa-university + icon: university weight: 20 -fa-thumbnail: fad fa-university +fa-thumbnail: university --- -> I have spent too long in school and not enough time in the middle of nowhere -> -> -- Baxter Black, DVM - During my time in academia, I have amassed a few notable accomplishments. Of course, as the old saying goes, "if it isn't published, then it never happened," -so here is a list of everything that actually happened. Several of these -articles are also available on -[my Google Scholar page](https://scholar.google.com/citations?user=gbP4RDgAAAAJ), -but this is the complete list. +so here is a list of everything that actually happened. + +Academia is not the be-all and end-all of life (contrary to what your professor +might have told you). I've found the side-effects to be similar to this guy's: + + +> I have spent too long in school and not enough time in the middle of nowhere, +> and it has inhibited my ability to learn the simple things. +{author="Baxter Black, DVM"} + diff --git a/content/academia/bpv-genetics.md b/content/academia/bpv-genetics.md new file mode 100644 index 0000000..edd678f --- /dev/null +++ b/content/academia/bpv-genetics.md @@ -0,0 +1,42 @@ +--- +title: "Genetic analysis of bovine papillomas" +date: 2024-09-19 +categories: + - poster +people: + - Thomas A. Christensen II + - Rachel Palinski + - Bob Gentry +journal: + "National Association of Animal Breeders Technical Conference Student Poster + session" +location: "Middleton, Wisconsin" +--- + +Bovine papillomavirus (BPV) is a major cause of reproductive failure in cattle. +In bulls, penile papillomas caused by BPV may cause reluctance to breed, and is +always a cause to fail an animal on a breeding soundness exam. Historically, it +has been thought that BPV was transmitted via direct contact and could be +controlled by managing clinically presenting animals in the herd, but more +recent evidence suggests alternative modes of transmission. BPV has been found +repeatably in clinically healthy animals, and in non-cutaneous secretions +including milk, blood, urine and semen. Currently, no commercially available BPV +vaccine uses isolated viral particles and naturally occurring virus does not +produce cross-protective immunity. In order to develop a proper vaccine for +penile papillomas further studies are required to understand the epidemiology of +BPV in herds. While vulvar, cutaneous, and mammary papillomas have been +genotyped in recent years, this information is not available for penile +papillomas. In this study there were 31 submissions, collected from 7 states, +NE, KS, NY, TX, AL, MO and SD (14 different cattle operations) Samples were +collected between August of 2022 and April 2024. Twenty-two submissions were +penile papillomas and with pooling of samples represented over 50 penile +papillomas. Samples were metagenomically sequenced at the Kansas State +Veterinary Diagnostic Lab, and the genotype of each sample was determined using +the phylogenetic analysis. The clade of each sample was determined by aligning +consensus sequences of the L1 gene (used for both for phylogeny and as a vaccine +target) using MAFFT and a maximum-likelihood phylogeny generated in Mega X. +Analysis found that all penile papilloma submissions were composed of BPV type +2, with one sample showing co-infection with BPV type 1. Conversely, cutaneous +and teat papillomas had BPV genotypes that were more variable with genotypes of +1,2,7,12,14,29 and 40. These results indicate that BPV type 2 and type 1 provide +a unified target for bovine penile papilloma vaccine development. diff --git a/content/academia/got-warts-naab.md b/content/academia/got-warts-naab.md new file mode 100644 index 0000000..adea3d8 --- /dev/null +++ b/content/academia/got-warts-naab.md @@ -0,0 +1,14 @@ +--- +title: + "Got Warts? Bovine Papillomavirus Pathogenesis, Transmission, and Vaccination" +date: 2024-09-19 +featured: false +categories: + - presentation +people: + - Bob Gentry + - Thomas A. Christensen II +journal: + "National Association of Animal Breeders Technical Conference Sponsor session" +location: "Middleton, Wisconsin" +--- diff --git a/content/academia/metagenomics/thumbnail.jpg b/content/academia/metagenomics/thumbnail.jpg new file mode 100644 index 0000000..b952da2 Binary files /dev/null and b/content/academia/metagenomics/thumbnail.jpg differ diff --git a/content/academia/pva-aiche/thumbnail.jpg b/content/academia/pva-aiche/thumbnail.jpg new file mode 100644 index 0000000..80f1c8e Binary files /dev/null and b/content/academia/pva-aiche/thumbnail.jpg differ diff --git a/content/academia/taxprofiler.md b/content/academia/taxprofiler.md new file mode 100644 index 0000000..b629a8a --- /dev/null +++ b/content/academia/taxprofiler.md @@ -0,0 +1,41 @@ +--- +title: + "nf-core/taxprofiler: highly parallelised and flexible pipeline for + metagenomic taxonomic classification and profiling" +date: 2023-10-23 +featured: true +tags: + - genomics +categories: + - paper +people: + - Sofia Stamouli + - Moritz E. Beber + - Tanja Normark + - Thomas A. Christensen II + - Lili Andersson-Li + - Maxime Borry + - Mahwash Jamy + - nf-core community + - James A. Fellows Yates +link: https://doi.org/10.1101/2023.10.20.563221 +journal: bioRxiv +--- + +Metagenomic classification tackles the problem of characterising the taxonomic +source of all DNA sequencing reads in a sample. A common approach to address the +differences and biases between the many different taxonomic classification tools +is to run metagenomic data through multiple classification tools and databases. +This, however, is a very time-consuming task when performed manually - +particularly when combined with the appropriate preprocessing of sequencing +reads before the classification. Here we present nf-core/taxprofiler, a highly +parallelised read-processing and taxonomic classification pipeline. It is +designed for the automated and simultaneous classification and/or profiling of +both short- and long-read metagenomic sequencing libraries against a 11 +taxonomic classifiers and profilers as well as databases within a single +pipeline run. Implemented in Nextflow and as part of the nf-core initiative, the +pipeline benefits from high levels of scalability and portability, accommodating +from small to extremely large projects on a wide range of computing +infrastructure. It has been developed following best-practise software +development practises and community support to ensure longevity and adaptability +of the pipeline, to help keep it up to date with the field of metagenomics. diff --git a/assets/images/library.jpg b/content/academia/thumbnail.jpg similarity index 100% rename from assets/images/library.jpg rename to content/academia/thumbnail.jpg diff --git a/content/academia/yavsap/index.md b/content/academia/yavsap/index.md new file mode 100644 index 0000000..3ffc79c --- /dev/null +++ b/content/academia/yavsap/index.md @@ -0,0 +1,54 @@ +--- +title: "YAVSAP: versatile viral quasispecies analysis for veterinary samples" +date: 2024-03-05 +featured: false +categories: + - presentation +people: + - Thomas A. Christensen II + - Steven Stancic + - Andrea Lu + - Dana Mitzel + - William Wilson + - Rachel Palinski +journal: "Phi Zeta Research Day" +location: "Manhattan, Kansas" +tags: + - virus + - quasispecies + - next-generation sequencing + - pipeline +awards: + - "2nd Place Large Animal Applied Research Presentation" +link: "/academia/yavsap/yavsap.pdf" +--- + +Viral populations within an infected host are composed of viral particles with a +spectrum of genetic mutations rather than a unified genome. This phenomenon is +referred to as viral "quasispecies," and has been useful for the understanding +of viral transmission and early detection of new viral variants. Next generation +sequencing (NGS) has enabled the study of these quasispecies for many viral +species, notably Influenza A and B, Human Immunodeficiency Virus (HIV), Foot and +Mouth Disease Virus (FMDV), and Severe Acute Respiratory Syndrome Coronavirus 2 +(SARS CoV2), and established protocols and computer analysis tools have been +developed for these species. Some of the most important viruses, such as +emerging and exotic disease agents, however, do not have replicatable protocols +or software tools capable of producing valid output from their sequence data. +Here, we present Yet Another Viral Subspecies Analysis Pipeline (YAVSAP). YAVSAP +is a fully automated bioinformatic pipeline built from the ground up to identify +and analyze viral quasispecies of any arbitrary virus in human and veterinary +samples. YAVSAP provides reference-based genome mapping of both long- and +short-read sequencing reads to any reference genome that the user chooses, +identifies subconsensus variants and haplotypes, and assesses the phylogenies of +all viral sequences found within a sample. YAVSAP is written in Nextflow and +conforms to the nf-core initiative's standards, which allows it to run on +low-end computers, high performance computing (HPC) clusters, or anything in +between with zero configuration. YAVSAP has been tested on viruses of interest +to veterinary medicine and public health, including Japanese Encephalitis Virus +(JEV), Influenza D Virus (IDV), Bovine Coronavirus (BCoV), SARS CoV2, and Rift +Valley Fever Virus (RVFV), and can correctly identify consensus genomes and +quasispecies within samples containing each of these viruses. This tool provides +a means for biologists with little bioinformatic experience to analyze deep +sequence data while correcting for many of the pitfalls associated with previous +and current analysis platforms. YAVSAP is open source software and is publicly +available at https://github.com/ksumngs/yavsap. diff --git a/content/academia/yavsap/yavsap.pdf b/content/academia/yavsap/yavsap.pdf new file mode 100644 index 0000000..14462c7 Binary files /dev/null and b/content/academia/yavsap/yavsap.pdf differ diff --git a/content/ai/_index.html b/content/ai/_index.html deleted file mode 100644 index 3c6b51a..0000000 --- a/content/ai/_index.html +++ /dev/null @@ -1,76 +0,0 @@ ---- -title: Artificial Insemination -cardImage: Ai-calf -motto: Artificial Insemination -description: - Advertising page to try and sell my artificial insemination services -date: 2022-12-31 -menu: - main: - params: - prefix: fax - icon: fa-bull-sperm - weight: 30 -fa-thumbnail: fax fa-bull-sperm ---- - -
-

Cattle artificial insemination services

- -

- I am licensed in the Great State of Wyoming as a food animal artificial - insemination technician. I only offer AI services for cows, even though - legally I could AI cows, goats, and sheep. My services are most - readily available in the southeast Wyoming area or the Flint Hills of Kansas - depending on the time of year. -

- -

Rate schedule

- -
- - - - - - - - - - - - - - - -
Insemination(per cow) - $25.00 - 5 cow minimum charge
Milage(per mile, one-way) - $1.05 - 2.5 mile minimum charge
-
- -

- I will provide all equipment except semen storage (liquid - nitrogen tank) and cattle handling (i.e., squeeze chute). -

-

- To get started, contact me, and select the "I'm - hiring for artificial insemination" option. -

-
diff --git a/content/blogroll/_index.md b/content/blogroll/_index.md index 2a17fb5..307a619 100644 --- a/content/blogroll/_index.md +++ b/content/blogroll/_index.md @@ -1,5 +1,15 @@ --- -draft: true +title: "Blogroll" +menu: + main: + name: Blogroll + params: + icon: scroll + weight: -800 +cardImage: eclipse +cardImageDescription: | + Randall Monroe was right. Eclipses are way cooler than they sound. +suppressRss: true --- ## Stuff I like on the internet @@ -7,39 +17,4 @@ draft: true This section of a website used to be called a "blogroll." I don't know what it's called now. In order to be on this list, I must have been subscribed or otherwise follow it for over a year. It's amazing how little stuff on the -internet can't make that cut. - -### [Thru the Bible](https://ttb.org/) - -I'm convinced that the word of God is timeless, and we need less commentary and -cherry-picking of favorite verses, and more study of the complete Bible. Dr. -McGee does just that. - -### [Enoch the Cow Vet](https://youtube.com/channel/UC6PPmHUbcdOSzX5tLB3uXdw) - -A veterinarian/agricultural channel that doesn't make me cringe. "God built -these things for cows for vets ... [there are] so many aspects of the cow that -are just designed for vets." Amen, Enoch. Amen. - -### [Proglogion](https://blog.drwile.com/) - -The blog of my high school science teacher (of sorts). It is refreshing to find -a creationist who can still think critically. I love his "bad sermon -illustrations" posts. - -### [The Milk Check](https://www.jacoby.com/learning-center/podcasts-overview/) - -A pragmatic inside look at dairy marketing. I only understand half of what -they're talking about, but I learn something new every episode. - -### [Brian Harry's Blog](https://devblogs.microsoft.com/bharry/) - -Where else are you going to find a blog about cows _and_ version control? The -blog is basically dead now, but it's still fun to go back and read the farm -stories. - -### [Car Talk](https://cartalk.com/) - -The antics of these guys are enough to make anyone have to pull over to the side -of the road from laughing too much. I dread the day when NPR fully axes the only -good program to cross their airwaves. +internet can make that cut. diff --git a/content/blogroll/brian-harry/index.md b/content/blogroll/brian-harry/index.md new file mode 100644 index 0000000..a75e0bd --- /dev/null +++ b/content/blogroll/brian-harry/index.md @@ -0,0 +1,8 @@ +--- +title: Brian Harry's blog +link: https://devblogs.microsoft.com/bharry/ +--- + +Where else are you going to find a blog about cows _and_ version control? The +blog is basically dead now, but it's still fun to go back and read the farm +stories. diff --git a/content/blogroll/brian-harry/thumbnail.png b/content/blogroll/brian-harry/thumbnail.png new file mode 100644 index 0000000..98cd5b5 Binary files /dev/null and b/content/blogroll/brian-harry/thumbnail.png differ diff --git a/content/blogroll/car-talk/index.md b/content/blogroll/car-talk/index.md new file mode 100644 index 0000000..ee66c77 --- /dev/null +++ b/content/blogroll/car-talk/index.md @@ -0,0 +1,8 @@ +--- +title: Car Talk +link: https://cartalk.com +--- + +The antics of these guys are enough to make anyone have to pull over to the side +of the road from laughing too much. I dread the day when NPR fully axes the only +good program to cross their airwaves. diff --git a/content/blogroll/car-talk/thumbnail.jpg b/content/blogroll/car-talk/thumbnail.jpg new file mode 100644 index 0000000..d09dcaf Binary files /dev/null and b/content/blogroll/car-talk/thumbnail.jpg differ diff --git a/content/blogroll/enoch-the-cow-vet/index.md b/content/blogroll/enoch-the-cow-vet/index.md new file mode 100644 index 0000000..0e3f074 --- /dev/null +++ b/content/blogroll/enoch-the-cow-vet/index.md @@ -0,0 +1,8 @@ +--- +title: Enoch the Cow Vet +link: https://youtube.com/channel/UC6PPmHUbcdOSzX5tLB3uXdw +--- + +A veterinarian/agricultural channel that doesn't make me cringe. "God built +these things for cows for vets ... [there are] so many aspects of the cow that +are just designed for vets." Amen, Enoch. Amen. diff --git a/content/blogroll/enoch-the-cow-vet/thumbnail.jpg b/content/blogroll/enoch-the-cow-vet/thumbnail.jpg new file mode 100644 index 0000000..3e99c2f Binary files /dev/null and b/content/blogroll/enoch-the-cow-vet/thumbnail.jpg differ diff --git a/content/blogroll/proslogion/index.md b/content/blogroll/proslogion/index.md new file mode 100644 index 0000000..f73002f --- /dev/null +++ b/content/blogroll/proslogion/index.md @@ -0,0 +1,8 @@ +--- +title: Proslogion +link: https://blog.drwile.com +--- + +The blog of my high school science teacher (of sorts). It is refreshing to find +a creationist who can still think critically. I love his "bad sermon +illustrations" posts. diff --git a/content/blogroll/proslogion/thumbnail.jpg b/content/blogroll/proslogion/thumbnail.jpg new file mode 100644 index 0000000..2369d6c Binary files /dev/null and b/content/blogroll/proslogion/thumbnail.jpg differ diff --git a/content/blogroll/thru-the-bible/index.md b/content/blogroll/thru-the-bible/index.md new file mode 100644 index 0000000..9863380 --- /dev/null +++ b/content/blogroll/thru-the-bible/index.md @@ -0,0 +1,8 @@ +--- +title: Thru the Bible +link: https://ttb.org +--- + +I'm convinced that the word of God is timeless, and we need less commentary and +cherry-picking of favorite verses, and more study of the complete Bible. Dr. +McGee does just that. diff --git a/content/blogroll/thru-the-bible/thumbnail.jpg b/content/blogroll/thru-the-bible/thumbnail.jpg new file mode 100644 index 0000000..87c7d57 Binary files /dev/null and b/content/blogroll/thru-the-bible/thumbnail.jpg differ diff --git a/assets/images/eclipse.jpg b/content/blogroll/thumbnail.jpg similarity index 100% rename from assets/images/eclipse.jpg rename to content/blogroll/thumbnail.jpg diff --git a/content/code/_content.gotmpl b/content/code/_content.gotmpl new file mode 100644 index 0000000..2992e8b --- /dev/null +++ b/content/code/_content.gotmpl @@ -0,0 +1,75 @@ +{{ $data := dict }} +{{ $url := "https://code.millironx.com/api/v1/users/millironx/repos" }} +{{ with try (resources.GetRemote $url) }} + {{ with .Err }} + {{ errorf "Unable to get remote resource %s: %s" $url . }} + {{ else with .Value }} + {{ $data = . | transform.Unmarshal }} + {{ end }} +{{ else }} + {{ errorf "Unable to get remote resource %s" $url }} +{{ end }} + +{{ range $data }} + {{/* Get tags of this repository. To quote Steve Edstrom, "If it doesn't have a + tag, it doesn't count." + */}} + {{ $tagUrl := print "https://code.millironx.com/api/v1/repos/millironx/" .name "/tags" }} + {{ $tagData := dict }} + {{ with try (resources.GetRemote $tagUrl) }} + {{ with .Err }} + {{ errorf "Unable to get remote resource %s: %s" $tagUrl . }} + {{ else with .Value }} + {{ $tagData = . | transform.Unmarshal }} + {{ end }} + {{ else }} + {{ errorf "Unable to get remote resource %s" $tagUrl }} + {{ end }} + + {{ $firstTag := index $tagData 0 }} + + {{ if $firstTag }} + {{ $dates := dict "date" (time.AsTime $firstTag.commit.created) }} + + {{ $content := dict "mediaType" "text/markdown" "value" .description }} + {{ $categories := slice "code" }} + {{ $people := slice "Thomas A. Christensen II" }} + {{ $link := .html_url }} + {{ $featured := (gt .stars_count 0) }} + {{ $tags := .topics }} + {{ $params := dict + "categories" $categories + "people" $people + "link" $link + "featured" $featured + "tags" $tags + }} + {{ $page := dict + "content" $content + "dates" $dates + "title" .name + "path" .name + "params" $params + }} + {{ $.AddPage $page }} + + {{ $item := . }} + {{ with $url := $item.avatar_url }} + {{ with resources.GetRemote $url }} + {{ with .Err }} + {{ errorf "Unable to get remote resource %s: %s" $url . }} + {{ else }} + {{ $content := dict "mediaType" .MediaType.Type "value" .Content }} + {{ $resource := dict + "content" $content + "path" (print $item.name "/thumbnail." .MediaType.SubType) + }} + {{ $.AddResource $resource }} + {{ end }} + {{ else }} + {{ errorf "Unable to get remote resource %s" $url }} + {{ end }} + {{ end }} + {{ end }} + +{{ end }} diff --git a/content/code/_index.md b/content/code/_index.md new file mode 100644 index 0000000..c7c7df5 --- /dev/null +++ b/content/code/_index.md @@ -0,0 +1,14 @@ +--- +title: Coding projects +menu: + main: + name: Code + params: + icon: code + link: https://code.millironx.com + weight: 50 +fa-thumbnail: code +link: https://code.millironx.com +--- + +A Forgejo instance dedicated to cows and technology diff --git a/content/contact/_index.html b/content/contact/_index.html index bed691c..3d73f4f 100644 --- a/content/contact/_index.html +++ b/content/contact/_index.html @@ -1,6 +1,9 @@ --- title: Contact Me cardImage: venice-mailbox +cardImageDescription: + This mailbox was used for reporting public health offenses in Venice. It + survived the wrath of Napoleon because it didn't look enough like a lion. motto: Contact Me description: Contact form to get ahold of me date: 2023-07-01 @@ -8,100 +11,79 @@ menu: main: name: Contact params: - prefix: fad - icon: fa-file-signature + icon: file-signature weight: 1 -fa-thumbnail: fad fa-file-signature +fa-thumbnail: file-signature +validation: true +suppressRss: true --- -
+ + +
Contact Me - -
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
- -
- -
-
-
-
- - -
-
+ + + + + + + + + + + + + +
+ + +
diff --git a/assets/images/venice-mailbox.jpg b/content/contact/thumbnail.jpg similarity index 100% rename from assets/images/venice-mailbox.jpg rename to content/contact/thumbnail.jpg diff --git a/content/login/index.md b/content/login/index.md new file mode 100644 index 0000000..9aac1f7 --- /dev/null +++ b/content/login/index.md @@ -0,0 +1,14 @@ +--- +title: Login +menu: + main: + name: Login + params: + icon: right-to-bracket + link: https://youtu.be/dQw4w9WgXcQ + weight: 99 +fa-thumbnail: right-to-bracket +link: https://youtu.be/dQw4w9WgXcQ +--- + +The password is "Open sesame!" diff --git a/content/me-and-lady.jpg b/content/me-and-lady.jpg deleted file mode 100644 index 6715211..0000000 Binary files a/content/me-and-lady.jpg and /dev/null differ diff --git a/content/people/thomas-a.-christensen-ii/_index.md b/content/people/thomas-a.-christensen-ii/_index.md new file mode 100644 index 0000000..54b7090 --- /dev/null +++ b/content/people/thomas-a.-christensen-ii/_index.md @@ -0,0 +1,113 @@ +--- +title: "Thomas A. Christensen II" +menu: + main: + name: About + params: + icon: circle-info + me: true + weight: -900 +homepage: https://millironx.com +accounts: + google-scholar: gbP4RDgAAAAJ + github: MillironX + hacker-news: millironx + matrix: "@millironx:matrix.org" + orcid: 0000-0003-1219-9320 + steam: millironx + vimeo: tchristensenii +gpg_key: + fingerprint: 8B12 8295 5A14 9FAB 735F 56D3 AD91 52EB 09C8 4352 + public_key: | + -----BEGIN PGP PUBLIC KEY BLOCK----- + + mDMEZ100cRYJKwYBBAHaRw8BAQdAV485J1tB8sQPisFGyRYREcOtJsRSdwQEQ5aM + Exg6ozC0RlRob21hcyBBLiBDaHJpc3RlbnNlbiBJSSA8MjU0OTIwNzArTWlsbGly + b25YQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT6IkwQTFgoAOxYhBIsSgpVaFJ+r + c19W062RUusJyENSBQJnXTU2AhsBBQsJCAcCAiICBhUKCQgLAgQWAgMBAh4HAheA + AAoJEK2RUusJyENS21UA/iPpRxE8zTQa1xktSXDYSLxWoDcsHhziQGqwULqUKot+ + APwMLFpov2TW322SQ8Fui1jYb/Z1SxnJ/jNiarpRRAGYALQ7VGhvbWFzIEEuIENo + cmlzdGVuc2VuIElJIDx0aG9tYXMuY2hyaXN0ZW5zZW5AbWlsbGlyb254LmNvbT6I + kwQTFgoAOxYhBIsSgpVaFJ+rc19W062RUusJyENSBQJnXTRxAhsBBQsJCAcCAiIC + BhUKCQgLAgQWAgMBAh4HAheAAAoJEK2RUusJyENS4ykA/1YyKsTvlW1xgt16p8Yv + J0c+R9XfpwJoVUad/clF7olxAQCqgBYD4HmcGemCuEzIQ3OfQi94scEIu8Q8pA8n + c9MzDLQzVGhvbWFzIEEuIENocmlzdGVuc2VuIElJIDxtaWxsaXJvbnhAcHJvdG9u + bWFpbC5jb20+iJMEExYKADsWIQSLEoKVWhSfq3NfVtOtkVLrCchDUgUCZ101NgIb + AQULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRCtkVLrCchDUhbHAQCmHYXF + pyaW2ImR7e2MAkvJGlCP82ssL6ZYvLy/6AnW0AD/bqtMr0qpvIQrMhyodOgBa7Iz + aHd3EpX6b1SiqOEuigS0MFRob21hcyBBLiBDaHJpc3RlbnNlbiBJSSA8bWlsbGly + b254QG1haWxib3gub3JnPoiTBBMWCgA7FiEEixKClVoUn6tzX1bTrZFS6wnIQ1IF + AmddNTYCGwEFCwkIBwICIgIGFQoJCAsCBBYCAwECHgcCF4AACgkQrZFS6wnIQ1I9 + gQEA/EWmrCFZfzWB50RuO7vGRsg3ac1fhQRPsZInbSL+Z2YA/RRJBLb8jWngKYd/ + cZikJ/GyowGtcoBJJBPruj5thFENtDdUaG9tYXMgQS4gQ2hyaXN0ZW5zZW4gSUkg + PHRjaHJpc3RlbnNlbkB2ZXQuay1zdGF0ZS5lZHU+iJMEExYKADsWIQSLEoKVWhSf + q3NfVtOtkVLrCchDUgUCZ101NgIbAQULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIX + gAAKCRCtkVLrCchDUtaIAQDmtsVMcVAEYijjwwuTo9uUXq1cq+VAd4nVlzx6cXvK + 2gD/Vi6c0YUQMe4XU6p3L8ur2Y0b5fwNvA2q+arerCe6cAq4MwRnXTWNFgkrBgEE + AdpHDwEBB0BtEdEOzEbrbd1RwtbiXfUdO/gecppU4WvtQGQ1uH2RTYj1BBgWCgAm + FiEEixKClVoUn6tzX1bTrZFS6wnIQ1IFAmddNY0CGwIFCQW755MAgQkQrZFS6wnI + Q1J2IAQZFgoAHRYhBN/IAiJKwiYzyKQIMfcVGW6wdYj/BQJnXTWNAAoJEPcVGW6w + dYj/fcsBAIkGSljZ7Gl//uPFiJpNf209EaLIZ4N15gMCbF18/g7iAP46Ah5gPvhp + 05IulDKJheDnjJwyrsfKCRg68SZ4dCvVB2BsAQCPhM/oJZdvzsOw0O3k/OAozX6b + RKwSe5tJJiLon7zqygD7B+021foD+snFTYAN4H22xS+BKqN0f8tw71sPWHZx7gW4 + MwRnXTWOFgkrBgEEAdpHDwEBB0BDcK/hT+3s452nnww9oinVstMTx7+lNYdEMt0V + TXxvo4h+BBgWCgAmFiEEixKClVoUn6tzX1bTrZFS6wnIQ1IFAmddNY4CGyAFCQW7 + 55IACgkQrZFS6wnIQ1KddQEA4LOnL5Gg/UHYOMej2nGVjlxI4cnLTo/ju7Ed1m9H + hYUA/iYU3KfUgfSfvLKhg91PwGfFDvmRLoBiYaflbekKe+cEuDgEZ101oBIKKwYB + BAGXVQEFAQEHQN3Bry/+BQMTunIxjcSY/kK7K9ItlPtpLjAWUQrWZqZMAwEIB4h+ + BBgWCgAmFiEEixKClVoUn6tzX1bTrZFS6wnIQ1IFAmddNaACGwwFCQW753YACgkQ + rZFS6wnIQ1LuRAD+JvOSrv1xe+HCjsSfNlOqCE9ZR2KcN1hcR/Gd80V4y4kA/3sC + GOYGT+Hm5E5a7oKKHIZOMxBhfFJCPdoxDMBvee0IuDMEZ1013xYJKwYBBAHaRw8B + AQdAURPrApZ0ORNAhLvhCKGjsPUvvpDEdeiuU7yezSkUkoiI9QQYFgoAJhYhBIsS + gpVaFJ+rc19W062RUusJyENSBQJnXTXfAhsCBQkFu+dBAIEJEK2RUusJyENSdiAE + GRYKAB0WIQQbOpuRop10V4Rxy0NLCkigcdPLigUCZ1013wAKCRBLCkigcdPLingd + AP4wnkOjPOUbbJq60e9eVwBATc6oMs8PUs/RW5IjQLo0+QEAnNN2GN0Ck9Ondxol + /vHmZCE2w5D+KNXighkM08qNGw1MRgEAt4cQmCD1BVQe+Vn5i0MxVvTDP4iBagAP + 0lUd2eSFtwwBAI2EjttUu1jY+TMlrav6WotRY9zB10Tc6OSBMA0kPpgEuDMEZ101 + 4BYJKwYBBAHaRw8BAQdA68JzWAJ5/aMLlx9/sTNVbP4HUnk+FMRR6B8WD0xL7z6I + fgQYFgoAJhYhBIsSgpVaFJ+rc19W062RUusJyENSBQJnXTXgAhsgBQkFu+dAAAoJ + EK2RUusJyENS4MoA/2T1RjkEhwII6FAJWj8UV/nvwodXyX2eDgZj+h7izRflAP9y + 19MsNmOkEhVJJbz1rnCkpzdcG4x0PNoMGy+44xj1ArgzBGddNeAWCSsGAQQB2kcP + AQEHQGMufoZikOyOFbHvu+CJcQlK5DclCVNJBgZQcImpEqm/iPUEGBYKACYWIQSL + EoKVWhSfq3NfVtOtkVLrCchDUgUCZ1014AIbAgUJBbvnQACBCRCtkVLrCchDUnYg + BBkWCgAdFiEEhp1tRu+xCJg9TLHNGaLvOjwMGKkFAmddNeAACgkQGaLvOjwMGKko + 4gD+NLJaxLDatmU+C/l5fLV6xp0PRS/c5tRRMdhtic211BgA/0lrdz2pHGHlQwvw + PRZg2EMiTDreawVZrlSZdfexBeMD7bYA/A9gGeZYVzKKABjoyF1EMvDPm7x7bSrE + xpB7tEzJy7a7AQCs+x55xgk9NSrmo4ZjTIXsj7BZTkhTDkJay1FZ65lsAbgzBGdd + NeAWCSsGAQQB2kcPAQEHQLa2MGXl7JyU/yS+dz0mkPcRIZpU4C3USLmYWJVT/deN + iH4EGBYKACYWIQSLEoKVWhSfq3NfVtOtkVLrCchDUgUCZ1014AIbIAUJBbvnQAAK + CRCtkVLrCchDUnXBAQCmFWVZzm3vOEftIPCRcKKsgaFg31CoxCpxhCw5rglwKgD/ + eQOxmwkpRQUe+R3qoyVGy/K2XHoPFJrdVb8JTh/krQ64MwRnXTXhFgkrBgEEAdpH + DwEBB0Dgt18beC6Ttlfr0QbXy2/gAX55kKHHpALY2mMm++/HNYj1BBgWCgAmFiEE + ixKClVoUn6tzX1bTrZFS6wnIQ1IFAmddNeECGwIFCQW75z8AgQkQrZFS6wnIQ1J2 + IAQZFgoAHRYhBBBFsbS1b3+lJiAJEYvIgJ5FpsrQBQJnXTXhAAoJEIvIgJ5FpsrQ + xdEBAK1to7pkMw1JJzL/OKgexB/HAYryDU20HiCTWbMBPTWRAP9uIiNkVUZ58ja/ + 3Dcl+ah1kUxd3Mrxs49jI4ItJtZ8D4FBAQAA1aRdYoFwvWrxuDUONNHZGZBWczm0 + 9kttdmGfIpfEAgD/ZDJWfRpxO3AEwU0BpVB3mxFSSF058ShOAjXcbZMEngq4MwRn + XTXhFgkrBgEEAdpHDwEBB0AMqjR+Y5jc/tawBcWLAkUbhWXvGFoRZziglCW76vw1 + 44h+BBgWCgAmFiEEixKClVoUn6tzX1bTrZFS6wnIQ1IFAmddNeECGyAFCQW75z8A + CgkQrZFS6wnIQ1IRFwEA5KMPbay92FCsR8gBqDWSBfZXxgXxasYMKYHFmFIQ7yAB + APU7TUwdw8yA55fUC6XqwtlQ2khyIiq/TBExZ4oFkbUF + =hbg7 + -----END PGP PUBLIC KEY BLOCK----- +crypto: + bitcoin: bc1q66u7fqmptr4sczfmvxxfckzl6566633umx40n7 + lightning: "millironx@coinos.io" + ethereum: 0x97610b550a5eB6eB2c4a57d3D2b317816c413Fb4 + monero: 4649mFt2BVjC8pYD7K5kKzSgbWseoL9r3d6eQJ6nebwnLTe6jQKwB9g3jXkwiXAu1aizir8Uf2TYwAM5sQ4Ggp5434p7fzb + zcash: zs13kw2rkljxj6uymx6nnk2npamn2dhafuljfq79ntv67320jaxshnw49h7prrjj5v0pr5ry44c3ml +--- + +Hi! I'm Thomas. I love anything to do with cattle or technology, but especially +anything to do with both of them. I spend way more time in beef country with +beef cows, but I've got a soft spot for Brown Swiss dairy cows (just in case you +couldn't tell by the pictures). I've worn a lot of different hats: + +| | | +| ------------------ | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ | +| First and foremost | ✝️ {{< abbr "Born again, fundamentalist, dispensationalist, King James Bible-believing, independent Baptist" >}}Christian{{< /abbr >}} | +| Location | 🦬 {{< abbr "I want to keep claiming Wyoming, but they're pretty strict about residency there, and I don't want to repeat the Liz Cheney fishing license incident" >}}Wyomingite{{< /abbr >}} sojourning in 🌻 {{< abbr "Yes, Toto, we are in Kansas now" >}}Kansas{{< /abbr >}} (this ought to be interesting) | +| Education | 📐 {{< abbr "noun. A person who cannot build cool things like airplanes or bridges, but can blow up an entire neighborhood and kill dozens of children by misplacing a decimal point. See also: self-hating chemist" >}}Chemical Engineer{{< /abbr >}} | +| Profession | 🧬 {{< abbr "I do genetics and computers" >}}Bioinformatician{{< /abbr >}} and 🐄🩺 {{< abbr "I can't rope well enough to be a cowboy, so being a cow doctor will have to suffice" >}}Veterinarian{{< /abbr >}} (soon!) | +| Politics | 🗽 {{< abbr "Refers to the belief in natural social and political laws created by God that are as inflexible as the laws of physics" >}}Juris naturalist{{< /abbr >}} | +| Hobbies | 🎥 {{< abbr "Storytelling at 24 frames per second" >}}Filmmaker{{< /abbr >}} and 💃🏻 {{< abbr "Square dancing is more musically rigid and is standardized across the country. Swing dancing is more freeform and differs regionally. It's like the difference between classical music and jazz. I like both." >}}Square/swing dancer{{< /abbr >}} | diff --git a/content/people/thomas-a.-christensen-ii/thumbnail.jpg b/content/people/thomas-a.-christensen-ii/thumbnail.jpg new file mode 100644 index 0000000..07e3b37 Binary files /dev/null and b/content/people/thomas-a.-christensen-ii/thumbnail.jpg differ diff --git a/content/posts/_index.md b/content/posts/_index.md new file mode 100644 index 0000000..ce1d17c --- /dev/null +++ b/content/posts/_index.md @@ -0,0 +1,20 @@ +--- +title: "ChemE Cows" +cardImage: stable-diffusion-cheme-cow-08 +cardImageDescription: | + black and white dairy cow wearing a bright yellow hard hat at an oil refinery on a clear sunny day + Fooocus v2.5.5 realisticStockPhoto_v20.safetensors + Hopefully someday I can replace this with a real image +motto: + ChemE Cows
A blog about cattle, technology, or anything remotely + affecting either of them +menu: + main: + name: Blog + params: + icon: block-quote + weight: 2 +fa-thumbnail: block-quote +--- + +A blog where I might post stuff some day. diff --git a/content/posts/baptist-mafia.md b/content/posts/baptist-mafia.md new file mode 100644 index 0000000..7b4481f --- /dev/null +++ b/content/posts/baptist-mafia.md @@ -0,0 +1,104 @@ +--- +title: + "On Baptist habits (or why Baptist churches feel like they're run by the + Mafia)" +date: 2024-03-01 +people: + - Thomas A. Christensen II +draft: true +tags: + - religion + - baptist + - christianity + - love + - doctrine +featured: true +categories: + - blog +--- + + + +In the grand tapestry of American religiosity, there exists a peculiar breed of +Christian denomination that stands out for its unique blend of fervent devotion +and...let's be honest, a hint of authoritarianism. I'm, of course, referring to +Baptist churches. Yes, those churches that make you wonder if they're being run +by the Mafia. + +Now, before I proceed, let me just clarify that this isn't an attempt to +disparage the good people who worship in these esteemed institutions. No, no, +nothing like that. It's merely a case of observational reporting, where I'm +poking around the fringes of Baptist culture to get a better understanding of +what makes them tick. + +As someone who's spent considerable time within the fold (hello, 20+ years of +being born again), I've come to realize that there are certain habits, +practices, and attitudes that seem endemic to Baptist churches. Now, keep in +mind that this isn't a generalization, but rather an observation born out of +personal experience. + +One of these habits is an extraordinary level of fervor and zealotry. Baptists +tend to be deeply invested in their faith, often to the point where it borders +on fanaticism. I've seen folks who will passionately argue for or against just +about anything that's perceived as contrary to their interpretation of +scripture. Now, while this can be a laudable trait in moderation, excessive +fervor can quickly turn toxic. + +Another peculiar habit of Baptist churches is an unsettling preoccupation with +hierarchy and authority. It's not uncommon to see senior pastors wielding near +absolute power within the church, often based on factors such as age, +experience, or – heaven forbid – personal popularity. This can lead to a culture +where dissenting voices are stifled, and nonconformity is discouraged. + +The worship services themselves often feel more like formal lectures or +performances than genuinely communal gatherings. Don't get me wrong; I love a +good hymn or sermon as much as the next person, but sometimes it feels like +you're trapped in a 90-minute lecture on theology. And if you're sitting too far +forward, forget about trying to contribute to the conversation – your +participation will be met with stern disapproval. + +In addition, there's an omnipresent air of suspicion and mistrust that seems to +pervade every aspect of Baptist life. If someone doesn't toe the party line, +they're often met with swift reprimand or outright ostracism. This creates a +toxic environment where people feel pressured into conformity rather than being +encouraged to explore their own spirituality. + +Of course, there are always exceptions to the rule, just like in any other human +endeavor. I've encountered Baptist churches that embody the very opposite of +these described habits – places where worship is genuine, inclusive, and +welcoming, where individual freedom and creativity are cherished, and where the +emphasis is on community rather than control. + +So what drives this peculiar breed of authoritarianism within some Baptist +churches? Is it a genuine misunderstanding of scripture, or perhaps a result of +historical context? Or is there something deeper at play – perhaps an inherent +tension between the democratic values of American society and the hierarchical +structures of traditional Christianity? + +These questions are central to my exploration of this topic. I'll delve into the +complexities of Baptist history, the role of patriarchal ideology, and the ways +in which cultural and social factors have shaped the institution over time. + +In conclusion, while I'm not ready to declare war on all things Baptist just yet +(although, I must admit, it's tempting), I do hope that this exploration will +shed some light on a fascinating aspect of American religiosity. Perhaps, +through a better understanding of these peculiar habits and practices, we can +foster a more inclusive and compassionate community – one where faith and +conviction are tempered by empathy and respect for differing viewpoints. + +Ultimately, as someone who's found their own spiritual home within the Baptist +fold, I believe it's essential to approach this conversation with sensitivity, +curiosity, and an open mind. By embracing our shared humanity rather than +perpetuating artificial divisions, we can work towards creating a more vibrant +tapestry of faith in America – one that celebrates diversity while remaining +committed to core principles of love and service. + +But for now, I'll leave you with these final thoughts on Baptist habits – habits +that may seem baffling or even disturbing at times, but are ultimately part of +what makes the Baptist experience so richly textured. diff --git a/content/posts/history-of-medicine.md b/content/posts/history-of-medicine.md new file mode 100644 index 0000000..5bc6652 --- /dev/null +++ b/content/posts/history-of-medicine.md @@ -0,0 +1,178 @@ +--- +title: "A Brief History of Medicine (2438)" +date: 2024-05-01 +people: + - Thomas A. Christensen II +draft: true +tags: + - medicine + - technology + - fiction + - epidemiology + - veterinary medicine +featured: true +categories: + - blog +--- + + + +I still remember the first time I set foot in the hospital where I would spend +most of my working life. It was 2123, and medicine was already a highly advanced +field, thanks to the rapid progress made possible by nanotechnology and +artificial intelligence. The patient I was assigned to that day was an elderly +man who had been suffering from a rare genetic disorder for years. With the help +of a swarm of microscopic robots that could repair damaged cells at a molecular +level, we were able to extend his lifespan by several decades. + +As a young physician, it was exhilarating to be part of a field that seemed to +have no limits. We were constantly pushing the boundaries of what was thought +possible, and it showed in our results. Patients who would have been doomed +years ago were now thriving, thanks to advances in medicine. + +But as with any rapidly advancing field, there were also risks involved. The use +of nanorobots and AI algorithms raised concerns about accountability and +transparency. As a physician, I had to be careful to ensure that my actions were +guided by the highest ethical standards. + +The years that followed were marked by incredible breakthroughs in medicine. +Diseases that had plagued humanity for centuries began to disappear as +treatments became more effective. Cancer, in particular, was a major target for +researchers, and significant progress was made in understanding its causes and +developing targeted therapies. + +One of the most exciting developments in this area was the discovery of a new +type of cancer-killing nanobot that could selectively target and destroy tumor +cells while leaving healthy tissue intact. The technology was still in its +infancy, but the potential it held was enormous. + +As I look back on those early years of my career, I am reminded of the +importance of perseverance and creativity. Medicine is a field that requires +constant innovation and adaptation, and it takes a lot of hard work to stay +ahead of the curve. + +Over time, medicine evolved to become an integral part of daily life. People +began to live longer, healthier lives, thanks to advances in preventative care +and personalized medicine. The rise of genomics and precision medicine allowed +for tailored treatments that could be customized to individual needs. + +As a physician, I had the privilege of witnessing firsthand the impact that +these advancements had on people's lives. Patients who would have been confined +to beds for years were now able to return to their normal activities, thanks to +the latest treatments. + +But with all the progress we made, there were also new challenges that emerged. +The increasing reliance on technology led to concerns about the ethics of +medicine. As medical robots and AI algorithms took over more tasks, there were +questions about accountability and the role of human physicians in this new +landscape. + +These debates are ongoing to this day. As a physician, it's essential for me to +stay up-to-date with the latest developments and advancements in my field. By +doing so, I can ensure that patients receive the best possible care, while also +navigating the complex issues surrounding medicine in the 24th century. + +Fast forward to 2438, and medicine has changed dramatically. Diseases have +become a rarity, thanks to breakthroughs in biotechnology and genetic +engineering. Humans live longer, healthier lives, with an average lifespan of +over 120 years. + +Despite these advancements, there are still challenges to overcome. The +increasing reliance on AI and biotechnology has raised concerns about the ethics +of medicine. Many people worry that as medical robots and algorithms take over +more tasks, human physicians will become obsolete. + +However, I firmly believe that this is a misconception. As a physician in 2438, +I can attest that being a doctor still requires a deep understanding of human +biology, psychology, and sociology. While technology has certainly advanced +medicine, there are also skills and qualities that cannot be replicated by +machines alone. + +One of the most critical aspects of being a doctor is empathy. As a human being, +you need to understand your patients' emotional states, their fears and +anxieties, in order to provide them with effective care. This is something that +AI systems struggle to replicate, no matter how advanced they become. + +In my practice, I see patients who have been diagnosed with conditions that were +previously considered incurable. Cancer, for example, has all but disappeared +thanks to targeted therapies and immunotherapies. However, there are still other +challenges to overcome. + +As a physician, it's essential to stay informed about the latest developments in +medicine. This includes understanding how new technologies can be used to +improve patient outcomes, as well as addressing any concerns or fears that +patients may have regarding these advancements. + +One of the most significant breakthroughs in recent years has been the +development of advanced bioprinting techniques. These allow for the creation of +complex tissue structures and organs, which can then be transplanted into +patients who require them. + +The potential applications for this technology are vast. It could revolutionize +organ transplantation, allowing for more efficient use of donor organs and +reducing the need for long-term immunosuppression treatments. + +However, there are also concerns about the ethics of bioprinting. As with any +new technology, there are questions about accountability, safety, and the role +of human physicians in this process. + +Despite these challenges, I remain optimistic about the future of medicine. As a +physician in 2438, I've seen firsthand the incredible progress that has been +made, and I'm excited to see what the next generation of medical breakthroughs +will bring. + +One area of particular interest is the development of new treatments for mental +health disorders. In my practice, I often encounter patients who struggle with +anxiety, depression, or post-traumatic stress disorder (PTSD). These conditions +are complex and multifaceted, and it's essential to develop treatments that +address all aspects of their impact. + +Recently, there has been a significant breakthrough in the development of new +therapies for mental health disorders. A team of researchers has made +significant progress in understanding the underlying mechanisms of these +conditions, and this has led to the development of new treatments that are more +effective than anything that came before. + +The treatment is based on the idea that mental health disorders are not just +symptoms, but rather a manifestation of an imbalance in the body's natural +chemistry. By developing targeted therapies that address this imbalance, +researchers have been able to create medications that can effectively treat a +wide range of conditions. + +One of the most promising developments in this area is the use of +neurotransmitter modulators. These are small molecules that can be used to +regulate the balance of neurotransmitters in the brain, which play a critical +role in regulating mood and emotional states. + +The implications for mental health treatment are enormous. For the first time in +history, we have a class of medications that could potentially treat multiple +conditions at once. This is a game-changer for patients who suffer from complex +mental health disorders, and it's a testament to the power of medical research. + +As I look back on my career as a physician, I am reminded of the importance of +perseverance and creativity. Medicine is a field that requires constant +innovation and adaptation, and it takes a lot of hard work to stay ahead of the +curve. + +Despite all the progress we've made, there are still challenges to overcome. The +increasing reliance on technology raises concerns about accountability and +transparency, as well as questions about the role of human physicians in this +new landscape. + +These debates will likely continue for years to come. As a physician, it's +essential for me to stay informed about the latest developments in medicine, +while also addressing any concerns or fears that patients may have regarding +these advancements. + +Ultimately, my goal is to provide the best possible care to my patients, while +also pushing the boundaries of what's thought possible in this field. As a +doctor in 2438, I am excited to see what the future holds for medicine, and I am +confident that we will continue to make tremendous progress in the years ahead. + +}} diff --git a/content/posts/keep-epds-real.md b/content/posts/keep-epds-real.md new file mode 100644 index 0000000..43c6a9c --- /dev/null +++ b/content/posts/keep-epds-real.md @@ -0,0 +1,121 @@ +--- +title: "Keep EPDs Real" +date: 2024-07-01 +people: + - Thomas A. Christensen II +draft: true +tags: + - cattle + - genetics + - technology + - epds + - ptas +featured: true +categories: + - blog +--- + + + +In the world of cattle breeding, there's a concept that can be both fascinating +and intimidating: Expected Progeny Differences (EPDs). I've come to appreciate +the importance of genetics and EPDs in cattle breeding. In this blog post, we'll +delve into what EPDs are, why they matter, and how to keep them real. + +## What Are EPDs? + +EPDs are a way to measure the genetic differences between animals that can help +breeders predict which offspring will be more or less desirable for certain +traits. Think of it like trying to guess what your favorite cow's children will +look like based on their parents' characteristics. In genetics, we call this +inheritance – and EPDs are a simple yet powerful tool to help us understand how +genetic traits are passed down. + +## The Basics of Genetics + +Before diving into EPDs, let's quickly review the basics of genetics. You see, +every living thing has DNA (deoxyribonucleic acid), which contains the +instructions for its development and function. The DNA is made up of genes, +which code for specific traits like eye color, hair color, or in our case, milk +production. + +Genes are like recipes that tell our bodies what to make – but instead of +ingredients like flour and sugar, they're made up of nucleotides. These +nucleotides can be either A (adenine), C (cytosine), G (guanine), or T +(thymine). The sequence of these nucleotides determines the genetic information. + +## How EPDs Work + +Now that we've covered some basics, let's talk about how EPDs work. Imagine +you're breeding two cows, Bessie and Daisy, to produce offspring. You want +Bessie to pass on her desirable traits, like excellent milk production, to their +children. + +To predict which calf will inherit these traits, you'd look at the genetic +information of both parents. You'd then use a complex formula that takes into +account the genetic potential of each parent and their offspring's genotype (the +actual DNA sequence). This gives you an Expected Progeny Difference score – +which represents how much better or worse the trait is expected to be in the +offspring compared to the parent. + +For example, let's say Bessie has a high EPD for milk production, but Daisy has +a low EPD. The formula would take into account both parents' scores and predict +that their calf will have an average EPD for milk production. + +## Benefits of EPDs + +So why do we need EPDs? In short, they help us make informed decisions about +breeding. By knowing which traits are being passed down from one generation to +the next, we can: + +1. Make better breeding choices +2. Predict potential problems or improvements in future generations +3. Develop more accurate breeding strategies + +But that's not all – EPDs also have a significant impact on the cattle industry +as a whole. By using data-driven approaches, breeders and farmers can: + +1. Increase efficiency and reduce costs +2. Improve animal welfare by selecting for desirable traits +3. Support sustainable agriculture practices + +## Challenges with EPDs + +While EPDs offer many benefits, there are also some challenges to consider: + +1. Data quality: If the data used to calculate EPDs is inaccurate or incomplete, + it can lead to incorrect predictions. +2. Complex genetics: Genetic inheritance can be complex, making it difficult to + predict how certain traits will manifest in offspring. +3. Selection bias: Breeders may unconsciously favor certain breeds or animals + due to personal preferences rather than objective genetic data. + +## Staying Up-to-Date with EPD Research + +EPDs are constantly evolving as new research emerges and technology improves. To +stay informed, it's essential to: + +1. Follow industry publications and scientific journals +2. Attend workshops and conferences on genetics and EPDs +3. Network with other breeders and researchers in the field + +## Conclusion + +In conclusion, Expected Progeny Differences (EPDs) are a valuable tool for +cattle breeders. By understanding how genetic traits are passed down through +generations, we can make more informed decisions about breeding and improve +animal welfare. + +Remember – keeping EPDs real means staying current with the latest research, +attending workshops, and networking with experts in the field. With these +skills, you'll be well on your way to becoming a genetics-savvy breeder! + +As always, I'm grateful for this opportunity to share my passion for cattle +breeding and genetics with you – whether it's through EPDs or something entirely +different! diff --git a/content/posts/new-site.md b/content/posts/new-site.md deleted file mode 100644 index 1050256..0000000 --- a/content/posts/new-site.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "New Site" -date: 2022-01-13T19:09:50-06:00 -draft: true ---- - -I have a new website! Narf! diff --git a/content/posts/nf-core.md b/content/posts/nf-core.md new file mode 100644 index 0000000..4113da8 --- /dev/null +++ b/content/posts/nf-core.md @@ -0,0 +1,106 @@ +--- +title: "My Troubles with nf-core" +date: 2024-09-01 +people: + - Thomas A. Christensen II +draft: true +tags: + - bioinformatics + - nf-core + - technology + - programming + - people +featured: true +categories: + - blog +--- + + + +# My Troubles with nf-core + +A blog post about my frustrations and experiences working with the popular +nf-core framework in bioinformatics. + +## Introduction + +As a biologist who has worked extensively with different software tools for +analyzing biological data, I have always been impressed by the power and +flexibility of the nf-core platform. However, after several years of using and +contributing to this excellent toolset, I have come to realize that there are +some fundamental issues with the way nf-core is currently structured and +maintained. + +## Background + +NF-core (short for Next-Generation Sequencing Core) is an open-source framework +developed by the Broad Institute of MIT and Harvard that provides a +comprehensive set of tools for analyzing high-throughput sequencing data. The +platform has been widely adopted in the scientific community due to its ease of +use, scalability, and flexibility. + +## My Experience with nf-core + +As a bioinformatician, I have worked extensively with various pipelines built on +top of nf-core, including the popular +[SNEAK](https://github.com/broadinstitute/SNEAK) pipeline for variant discovery. +While nf-core has provided me with a reliable platform for analyzing large +datasets, I have consistently encountered issues with its organization, +documentation, and community support. + +## Issues with Organization + +One of my biggest frustrations with nf-core is the lack of clear organization +within its repository. The project's main directory contains an overwhelming +number of subdirectories, each representing a different tool or pipeline. This +makes it difficult to navigate the codebase and understand how the various tools +interact with each other. + +## Documentation and Community Support + +NF-core has excellent documentation, but in my experience, this documentation is +often incomplete or outdated. I have encountered several instances where I was +unable to find relevant information about a particular tool or pipeline, leading +me to waste hours of time searching for answers online. + +Moreover, the nf-core community has historically been relatively inactive, with +few developers actively contributing to the project over the years. This lack of +support and resources makes it challenging to address issues or implement new +features. + +## Impact on Bioinformaticians + +Despite my personal frustrations with nf-core, I firmly believe that this +platform remains an essential tool for bioinformaticians around the world. The +benefits of using nf-core include its scalability, flexibility, and ease of use. +However, I strongly advocate for a renewed focus on addressing the issues +mentioned above to ensure that this platform continues to meet the evolving +needs of the scientific community. + +## Conclusion + +As someone who has dedicated their career to bioinformatics, it pains me to see +a project like nf-core hindered by its own structure and lack of support. While +I will continue to contribute to and use nf-core in my work, I hope that this +article will serve as a catalyst for the developers and community leaders +involved in maintaining this platform to prioritize much-needed changes. + +## Recommendations + +To address the issues I have raised above, I recommend the following steps: + +- Reorganize the repository structure to make it more logical and easier to + navigate. +- Update and expand the documentation to include comprehensive information on + all tools and pipelines within nf-core. +- Foster a more active community by engaging with bioinformaticians through + regular forums, workshops, or online events. + +By addressing these issues, I am confident that nf-core can continue to thrive +as a powerful tool for analyzing high-throughput sequencing data. diff --git a/content/posts/phineas-and-ferb.md b/content/posts/phineas-and-ferb.md new file mode 100644 index 0000000..86bc37c --- /dev/null +++ b/content/posts/phineas-and-ferb.md @@ -0,0 +1,211 @@ +--- +title: "Phineas and Ferb is (an) Epic" +date: 2024-11-01 +people: + - Thomas A. Christensen II +draft: true +tags: + - fun + - fiction + - phineas and ferb + - review + - literature +featured: true +categories: + - blog +--- + + + +"Ancient literary epics often followed a specific structure that centered around +an event or journey." The episode structure of Phineas and Ferb, which has been +delighting audiences for decades, is more closely aligned with ancient literary +epics than modern hero's journey novels. + +While the term "hero's journey" was popularized by Joseph Campbell in his work, +The Hero with a Thousand Faces, the model he proposed is based on archetypes and +mythological narratives found in cultures around the world. In contrast, Phineas +and Ferb's episode structure is centered around self-contained events or +journeys that are more reminiscent of ancient epics like Homer's Iliad or +Odyssey. + +"A common theme among ancient epics was the overcoming of challenges." One key +element that sets Phineas and Ferb apart from modern hero's journey novels is +its focus on the adventures themselves rather than individual characters' +emotional journeys. In an episode like "The Fireworks Episode," Phineas and Ferb +work together to create a spectacular fireworks display, but their actions are +not necessarily motivated by personal growth or transformation. Instead, they +take on the challenge as a way to have fun and make their day better. + +"This approach is similar to ancient epics like The Iliad, which tells the story +of the Trojan War." In Homer's Iliad, the characters are often driven by a +desire for honor or personal glory, rather than a deeper emotional journey. The +focus is on the event itself – in this case, the war between Troy and Greece – +rather than the individual characters' inner lives. + +"The Phineas and Ferb approach also avoids the 'big reveal' trope." Another key +element of ancient epics was often a dramatic twist or revelation at the end. In +Homer's Odyssey, for example, the protagonist Odysseus must navigate his way +home after being stranded on a distant island. The final scene reveals that he +has finally returned to Ithaca and is reunited with his wife. + +"Phineas and Ferb avoids this trope by ending most episodes on an upbeat note." +In contrast, Phineas and Ferb tends to wrap up its storylines in a way that +feels satisfying and fun for the audience. The final scene of an episode often +shows Phineas and Ferb achieving their goal or finding a creative solution to +their problem, without revealing any deeper truths or secrets. + +"This approach also reflects the show's focus on creativity and imagination." +One key aspect of ancient epics was their emphasis on the power of the human +mind and imagination. In Homer's Odyssey, for example, Odysseus uses his +intelligence and cunning to navigate his way home. + +"Phineas and Ferb encourages viewers to think creatively in a similar way." +Phineas and Ferb is known for its emphasis on creativity and imagination, with +characters often coming up with innovative solutions to problems. The show's +focus on the creative process itself – rather than individual characters' +emotional journeys – reflects this emphasis. + +"By following an episode structure that mimics ancient literary epics." Phineas +and Ferb's use of self-contained events or journeys, combined with a focus on +creativity and imagination, reflects a more traditional approach to +storytelling. By avoiding the 'big reveal' trope and emphasizing the creative +process, the show encourages viewers to think creatively and find their own +solutions to problems. + +"This is an approach that has been lost in many modern adaptations of ancient +stories." One criticism of modern hero's journey novels is that they often +prioritize individual character development over the adventures themselves. In +contrast, Phineas and Ferb takes a more epic approach to storytelling, focusing +on the events themselves rather than individual characters' emotional journeys. + +"The show's creators have said that they were influenced by their own love of +literature." Dan Povenmire and Jeff 'Swifty' Swinton, the creators of Phineas +and Ferb, have both mentioned being influenced by classic literature when +creating the show. They have stated that they wanted to create a show that +celebrated creativity and imagination in a way that was reminiscent of ancient +epics. + +"By taking an epic approach to storytelling." By following an episode structure +that mimics ancient literary epics, Phineas and Ferb offers a unique take on the +traditional 'hero's journey' narrative. While individual characters may grow or +change over the course of an episode, the focus is always on the event itself – +rather than individual emotional journeys. + +"This approach makes the show feel fresh and exciting." One key element that +sets Phineas and Ferb apart from modern hero's journey novels is its focus on +action and adventure. By emphasizing the creative process and self-contained +events, the show creates a sense of excitement and possibility that is rare in +modern television. + +"The show's use of music also reflects an epic approach." Another key element of +Phineas and Ferb is its use of music – specifically, Perry the Platypus' secret +agent theme song. The show's creators have said that they wanted to incorporate +a musical element into the episode structure, creating a sense of excitement and +anticipation that is reminiscent of ancient epics. + +"This approach creates a sense of rhythm and flow." By incorporating music in +this way, Phineas and Ferb creates a sense of rhythm and flow that is similar to +ancient epics. The show's use of melody and tempo helps to create a sense of +tension and release, drawing the viewer into the episode's narrative. + +"The show's focus on action and adventure also makes it feel epic." One key +element that sets Phineas and Ferb apart from modern hero's journey novels is +its focus on action and adventure. By emphasizing creativity and imagination in +this way, the show creates a sense of excitement and possibility that is rare in +modern television. + +"This approach also makes the show feel more timeless." Another key element of +Phineas and Ferb is its focus on storytelling itself – rather than individual +characters' emotional journeys. By taking an epic approach to storytelling, the +show creates a sense of timelessness that is rare in modern television. + +"The show's creators have said that they wanted to create a show that would +appeal to viewers of all ages." Dan Povenmire and Jeff 'Swifty' Swinton, the +creators of Phineas and Ferb, have both mentioned wanting to create a show that +celebrates creativity and imagination in a way that is accessible to audiences +of all ages. + +"By taking an epic approach to storytelling, Phineas and Ferb achieves this +goal." By following an episode structure that mimics ancient literary epics, +Phineas and Ferb creates a sense of excitement and possibility that is appealing +to viewers of all ages. The show's focus on creativity and imagination makes it +feel fresh and exciting, while its use of music and storytelling techniques +helps to create a sense of rhythm and flow. + +"In conclusion, the episode structure of Phineas and Ferb is more closely +aligned with ancient literary epics than modern hero's journey novels." By +taking an epic approach to storytelling, Phineas and Ferb offers a unique take +on the traditional 'hero's journey' narrative. While individual characters may +grow or change over the course of an episode, the focus is always on the event +itself – rather than individual emotional journeys. + +"The show's creators have said that they were influenced by their own love of +literature." Dan Povenmire and Jeff 'Swifty' Swinton, the creators of Phineas +and Ferb, have both mentioned being influenced by classic literature when +creating the show. They have stated that they wanted to create a show that +celebrated creativity and imagination in a way that was reminiscent of ancient +epics. + +"By following an epic approach to storytelling." By taking an epic approach to +storytelling, Phineas and Ferb offers a unique take on the traditional 'hero's +journey' narrative. While individual characters may grow or change over the +course of an episode, the focus is always on the event itself – rather than +individual emotional journeys. + +"This approach makes the show feel fresh and exciting." One key element that +sets Phineas and Ferb apart from modern hero's journey novels is its focus on +action and adventure. By emphasizing creativity and imagination in this way, the +show creates a sense of excitement and possibility that is rare in modern +television. + +"The show's use of music also reflects an epic approach." Another key element of +Phineas and Ferb is its use of music – specifically, Perry the Platypus' secret +agent theme song. The show's creators have said that they wanted to incorporate +a musical element into the episode structure, creating a sense of excitement and +anticipation that is reminiscent of ancient epics. + +"This approach creates a sense of rhythm and flow." By incorporating music in +this way, Phineas and Ferb creates a sense of rhythm and flow that is similar to +ancient epics. The show's use of melody and tempo helps to create a sense of +tension and release, drawing the viewer into the episode's narrative. + +"The show's focus on action and adventure also makes it feel epic." One key +element that sets Phineas and Ferb apart from modern hero's journey novels is +its focus on action and adventure. By emphasizing creativity and imagination in +this way, the show creates a sense of excitement and possibility that is rare in +modern television. + +"The show also encourages viewers to think creatively." Phineas and Ferb +encourages viewers to think creatively by presenting them with complex problems +to solve or adventures to embark upon. By emphasizing creativity and +imagination, the show inspires viewers to find their own solutions to problems. + +"This is an approach that has been lost in many modern adaptations of ancient +stories." One criticism of modern hero's journey novels is that they often +prioritize individual character development over the adventures themselves. In +contrast, Phineas and Ferb takes a more epic approach to storytelling, focusing +on the events themselves rather than individual characters' emotional journeys. + +"The show's creators have said that they wanted to create a show that would +appeal to viewers of all ages." Dan Povenmire and Jeff 'Swifty' Swinton, the +creators of Phineas and Ferb, have both mentioned wanting to create a show that +celebrates creativity and imagination in a way that is accessible to audiences +of all ages. + +"By taking an epic approach to storytelling." By following an episode structure +that mimics ancient literary epics, Phineas and Ferb achieves this goal. The +show's focus on creativity and imagination makes it feel fresh and exciting, +while its use of music and storytelling techniques helps to create a sense of +rhythm and flow. + +"In conclusion, the episode structure of Phineas and Ferb is more closely +aligned with ancient literary epics than modern hero's journey novels." In +conclusion, the episode structure of Phineas and Ferb is more closely aligned +with ancient literary epics than modern hero's journey novels. diff --git a/content/posts/thumbnail.jpg b/content/posts/thumbnail.jpg new file mode 100644 index 0000000..adbac97 Binary files /dev/null and b/content/posts/thumbnail.jpg differ diff --git a/content/posts/why-i-gave-up-github.md b/content/posts/why-i-gave-up-github.md new file mode 100644 index 0000000..1fefb07 --- /dev/null +++ b/content/posts/why-i-gave-up-github.md @@ -0,0 +1,123 @@ +--- +title: "Why I gave up GitHub: A personal retrospective" +date: 2024-01-01 +people: + - Thomas A. Christensen II +draft: true +tags: + - technology + - github + - linux + - microsoft + - windows +featured: true +categories: + - blog +--- + + + +Your personal journey to quitting GitHub resources is a story of disillusionment +and rededication. As a Christian American chemical +engineer-turned-bioinformatician, I had always been fascinated by the +intersection of technology and faith. + +Growing up in a conservative family with Libertarian leanings, I was taught to +value individual freedom and limited government intervention. But as I delved +deeper into my work in bioinformatics, I began to see the darker side of +GitHub's business model. The platform's emphasis on open-source and +community-driven development seemed at odds with my own values of intellectual +property and personal autonomy. + +One day, while working on a project, I stumbled upon an article about the +growing pains of GitHub's dominance in the tech industry. It highlighted the +tension between the need for collaboration and the perils of unchecked corporate +power. Something clicked inside me, and I realized that I couldn't remain silent +anymore. I began to question whether my use of GitHub was truly aligning with my +values. + +As a Christian, I had always believed in the importance of living a life of +integrity and authenticity. But the more I learned about GitHub's practices, the +more I felt like I was compromising on those principles. The platform's reliance +on open-source code seemed to prioritize the interests of corporations over +those of individuals. It was a hard pill to swallow. + +So, I made the decision to take a stand. I began to explore alternative +platforms and tools for my work, seeking out options that better aligned with my +values. It wasn't easy – it meant relearning new skills, investing time and +effort into building new relationships within the developer community. + +But as I dug deeper, I realized that quitting GitHub wasn't just about +technology – it was about re-examining my own motivations and priorities. Why +had I joined GitHub in the first place? What did I hope to achieve through my +work? + +For me, it was never truly about the technology itself, but about the community +and the sense of purpose that came with working on projects that mattered. As a +filmmaker at heart, I had always been drawn to stories that explored complex +issues and promoted empathy and understanding. + +Quitting GitHub wasn't an easy decision, but it was one that ultimately freed me +from feeling like I was compromising my values. It forced me to confront the +tension between my desires for connection and collaboration, and the need for +personal autonomy. + +Today, I work on a range of projects using alternative platforms and tools. It's +not always easy – sometimes I miss the convenience and community of GitHub – but +it's worth it to know that I'm living more authentically. + +One of the biggest challenges has been building new relationships within the +developer community. In the past, I relied heavily on GitHub for collaboration +and networking opportunities. But by leaving, I've had to start from scratch. + +It's taken time and effort to rebuild those connections, but it's worth it. +Today, I'm part of a vibrant network of developers who share my values and +priorities. We work together on projects that truly matter – issues like data +privacy, intellectual property, and accessibility. + +Quitting GitHub wasn't just about technology – it was about reclaiming my own +integrity and living out my values in a more meaningful way. It's been a journey +of self-discovery, growth, and transformation. And I'm grateful for every step +along the way. + +So, if you're like me and struggling with the tension between your personal +values and your work choices, I want to encourage you to take a step back and +re-examine your own motivations. What are you working towards? Why is it truly +important to you? + +Take the time to reflect on those questions, and consider whether your current +tools and platforms align with your values. + +In my experience, it's never too late to make a change. And sometimes, the +biggest changes come from taking small steps outside of our comfort zones. + +So, I'll leave you with this: if you're ready to take control of your own +journey and reclaim your integrity, start by taking a single step. It might be +as simple as switching to an alternative platform or tool. Or it could mean +having a difficult conversation with a colleague or manager. + +Whatever that step is, know that it's worth it. You'll be surprised at how +empowering it feels to take ownership of your own choices and priorities. + +And if you're feeling lost or uncertain, remember that you're not alone. There +are many people out there who share your values and aspirations. + +Let's build a community together – one where we prioritize empathy, +understanding, and authenticity. + +That's my story – a tale of disillusionment, rededication, and the power of +taking control of our own choices. I hope it inspires you to take a step in the +right direction. + +As a filmmaker at heart, I believe that stories have the power to shape us and +inspire change. And I'm grateful to be part of this community – working together +towards a brighter future where technology serves humanity, not just corporate +interests. + +We'll get there – one small step at a time. diff --git a/assets/images/charolette.jpg b/content/thumbnail.jpg similarity index 100% rename from assets/images/charolette.jpg rename to content/thumbnail.jpg diff --git a/content/videos/_content.gotmpl b/content/videos/_content.gotmpl new file mode 100644 index 0000000..2874dcd --- /dev/null +++ b/content/videos/_content.gotmpl @@ -0,0 +1,76 @@ +{{ $data := dict }} +{{ $url := "https://video.millironx.com/api/v1/accounts/millironx/videos?skipCount=true&count=100" }} +{{ with try (resources.GetRemote $url) }} + {{ with .Err }} + {{ errorf "Unable to get remote resource %s: %s" $url . }} + {{ else with .Value }} + {{ $data = . | transform.Unmarshal }} + {{ end }} +{{ else }} + {{ errorf "Unable to get remote resource %s" $url }} +{{ end }} + +{{ range $data.data }} + {{/* Complete descriptions and tags are only in the response for the complete video */}} + {{ $videoUrl := print "https://video.millironx.com/api/v1/videos/" .id }} + {{ $videoData := dict }} + {{ with try (resources.GetRemote $videoUrl) }} + {{ with .Err }} + {{ errorf "Unable to get remote resource %s: %s" $url . }} + {{ else with .Value }} + {{ $videoData = . | transform.Unmarshal }} + {{ end }} + {{ else }} + {{ errorf "Unable to get remote resource %s" $url }} + {{ end }} + + {{/* People are linked back to the the main site, so search for them here */}} + {{ $peopleReturned := findRESubmatch `\[([\w\s\.]+?)\]\(https://millironx\.com/people/.*\)` $videoData.description }} + {{ $people := slice "Thomas A. Christensen II" }} + {{ range $peopleReturned }} + {{ with index . 1 }} + {{ $people = $people | append . }} + {{ end }} + {{ end }} + + {{ $tags := $videoData.tags }} + + {{ $content := dict "mediaType" "text/markdown" "value" $videoData.description }} + {{ $dates := dict "date" (time.AsTime (default .publishedAt .originallyPublishedAt)) }} + {{ $categories := slice "video" }} + {{ $link := .url }} + {{ $params := dict + "categories" $categories + "people" $people + "link" $link + "featured" true + "tags" $tags + }} + {{ $page := dict + "content" $content + "dates" $dates + "title" .name + "path" .name + "params" $params + }} + {{ $.AddPage $page }} + + {{ $item := . }} + {{ with $thumbnailPath := $item.thumbnailPath }} + {{ $url := print "https://video.millironx.com" $thumbnailPath }} + {{ with try (resources.GetRemote $url) }} + {{ with .Err }} + {{ errorf "Unable to get remote resource %s: %s" $url . }} + {{ else with .Value }} + {{ $content := dict "mediaType" .MediaType.Type "value" .Content }} + {{ $resource := dict + "content" $content + "path" (print $item.name "/thumbnail." .MediaType.SubType) + }} + {{ $.AddResource $resource }} + {{ end }} + {{ else }} + {{ errorf "Unable to get remote resource %s" $url }} + {{ end }} + {{ end }} +{{ end }} diff --git a/content/videos/_index.md b/content/videos/_index.md index e555640..f68c415 100644 --- a/content/videos/_index.md +++ b/content/videos/_index.md @@ -1,23 +1,22 @@ --- title: Videos cardImage: camera +cardImageDescription: + Isn't it a shame that the company that brought photography to the masses is + basically out of business now? motto: Videography Portfolio description: Showcase of my own videos menu: main: params: - prefix: fad - icon: fa-video -fa-thumbnail: fad fa-video + icon: video + link: https://video.millironx.com + weight: 50 +fa-thumbnail: video +link: https://video.millironx.com --- -> ### The culmination of all art forms is that of film. - A good film must have the plot and language of a good novel, characters as bold and stunning as sculpture, a rhythm as driving and delicate as poetry, frame compositions more stellar that those of photography, and music that speaks to the souls of both the characters on screen and the viewers off. - -But I digress. Most of my forays into the world of film are immortalized on -[my Peertube channel](https://video.millironx.com/c/mix_studios/videos), but I -decided to share a few highlights here. Enjoy! diff --git a/content/videos/ag-olympics-reel/index.md b/content/videos/ag-olympics-reel/index.md index 4aa0172..6de2be1 100644 --- a/content/videos/ag-olympics-reel/index.md +++ b/content/videos/ag-olympics-reel/index.md @@ -1,11 +1,11 @@ --- title: "Farm Bureau Ag Olympics Reel" date: 2017-02-16 -storage: yt -storageId: jhLJp3OFsYM -thumbnail: https://i.ytimg.com/vi_webp/jhLJp3OFsYM/maxresdefault.webp categories: - video +link: https://youtube.com/watch?v=jhLJp3OFsYM +people: + - Thomas A. Christensen II --- The Albany County Farm Bureau Young Farmer's and Rancher's committee asked me to diff --git a/content/videos/if-you-come-out-to-the-fair/index.md b/content/videos/if-you-come-out-to-the-fair/index.md deleted file mode 100644 index 0cd26a7..0000000 --- a/content/videos/if-you-come-out-to-the-fair/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: If You Come Out to the Fair -date: 2016-10-13 -storage: peertube -storageId: 3a872dbf-4141-4bec-8a0c-11f5c1db2328 -thumbnail: https://video.millironx.com/lazy-static/previews/d1f33911-fdff-461d-a485-54de0bde79f3.jpg -categories: - - video ---- - -My extension agent asked me to make a promotional video for our county fair. -This is the only film of mine that has drawn an emotional response. I think I -retired after this. diff --git a/content/videos/if-you-come-out-to-the-fair/thumbnail.jpg b/content/videos/if-you-come-out-to-the-fair/thumbnail.jpg deleted file mode 100644 index 2d3a16d..0000000 Binary files a/content/videos/if-you-come-out-to-the-fair/thumbnail.jpg and /dev/null differ diff --git a/content/videos/in-the-hayfields/index.md b/content/videos/in-the-hayfields/index.md deleted file mode 100644 index e31f66b..0000000 --- a/content/videos/in-the-hayfields/index.md +++ /dev/null @@ -1,14 +0,0 @@ ---- -title: In The Hayfields -date: 2015-10-05 -storage: peertube -storageId: a755f140-123a-4435-8002-0da2d0c831e9 -thumbnail: https://video.millironx.com/lazy-static/previews/837d70cd-b5dc-48be-bc65-84a50ae29c99.jpg -categories: - - video ---- - -I always get the comment that our implements are _old_ whenever I show this -video off. I just ignore the naysayers, though, and good thing, too, because a -version of this video won a [GoPro Award](https://gopro.com/awards). Still -waiting to see my footage on their channel, though. diff --git a/content/videos/in-the-hayfields/thumbnail.jpg b/content/videos/in-the-hayfields/thumbnail.jpg deleted file mode 100644 index 4ca0bba..0000000 Binary files a/content/videos/in-the-hayfields/thumbnail.jpg and /dev/null differ diff --git a/content/videos/non-verum/index.md b/content/videos/non-verum/index.md deleted file mode 100644 index 3b70cfb..0000000 --- a/content/videos/non-verum/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: "Non. Verum: The Mystery Killer" -date: 2015-06-12 -storage: peertube -storageId: 03ac71e5-69b2-4c3d-b8b2-da98055cd953 -thumbnail: https://video.millironx.com/lazy-static/previews/6c479593-5bcf-4953-bbe5-99c4b4a87a79.jpg -categories: - - video ---- - -My first ~~documentary~~ mockumentary. This film won 2{{< sup nd >}} place at -the [2016 National 4-H Film Festival](http://4h.missouri.edu/filmfest4h/), and -I've been told that it's more polished than the pieces done by the local TV -stations. No one seems to think it's funny, though, so I'm not sure how -successful it was. Please do me a favor and google **every** term you don't -understand while watching it, and perhaps you'll fare better. diff --git a/content/videos/non-verum/thumbnail.jpg b/content/videos/non-verum/thumbnail.jpg deleted file mode 100644 index 343f00b..0000000 Binary files a/content/videos/non-verum/thumbnail.jpg and /dev/null differ diff --git a/content/websites/_index.md b/content/websites/_index.md deleted file mode 100644 index 829b010..0000000 --- a/content/websites/_index.md +++ /dev/null @@ -1,18 +0,0 @@ ---- -title: My Websites -cardImage: eclipse -motto: Websites -description: List of websites that I have worked on -menu: - main: - name: Websites - params: - prefix: fad - icon: fa-browser -fa-thumbnail: fad fa-browser ---- - -I do occasionally build websites for myself and other people. Here is a list of -websites I have contributed code to directly, in a vain attempt to gain each of -them some -[search engine cred](https://en.wikipedia.org/wiki/Search_engine_optimization). diff --git a/content/websites/millironx/index.md b/content/websites/millironx/index.md deleted file mode 100644 index 1158e2b..0000000 --- a/content/websites/millironx/index.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: Milliron X -date: 2022-03-01 -platform: Hugo -platformIcon: fab fa-golang -platformURL: https://gohugo.io/ -deployURL: https://millironx.com -sourceURL: https://github.com/MillironX/millironx.github.io -categories: - - web ---- - -Lo and behold: I made my own website! diff --git a/content/websites/millironx/thumbnail.png b/content/websites/millironx/thumbnail.png deleted file mode 100644 index 092e59c..0000000 Binary files a/content/websites/millironx/thumbnail.png and /dev/null differ diff --git a/content/websites/record-books/index.md b/content/websites/record-books/index.md deleted file mode 100644 index 31b92b2..0000000 --- a/content/websites/record-books/index.md +++ /dev/null @@ -1,16 +0,0 @@ ---- -title: Albany County 4-H Record Books -date: 2019-08-10 -platform: Plain ol' HTML5 -platformIcon: fab fa-html5 -platformURL: https://www.w3.org/html/ -deployURL: http://wyoming4h.org/albany4h/record-book -sourceURL: https://github.com/MillironX/4h-record-books -categories: - - web ---- - -I constructed this site to hold the record book helps of the rebellious Albany -County, Wyoming. Due to the bureaucratic lag that it takes to update, it got -updated just in time for Wyoming 4-H to ditch paper record books entirely. Oh, -well. diff --git a/content/websites/record-books/thumbnail.png b/content/websites/record-books/thumbnail.png deleted file mode 100644 index 6d3d110..0000000 Binary files a/content/websites/record-books/thumbnail.png and /dev/null differ diff --git a/content/wy-in-ks.png b/content/wy-in-ks.png deleted file mode 100644 index daac943..0000000 Binary files a/content/wy-in-ks.png and /dev/null differ diff --git a/default.nix b/default.nix deleted file mode 100644 index e940989..0000000 --- a/default.nix +++ /dev/null @@ -1,8 +0,0 @@ -{ pkgs ? import (fetchTarball "https://github.com/NixOS/nixpkgs/archive/994e2ef9e9c70b4dd7257f73452a94e871723685.tar.gz") {} }: - -pkgs.mkShell { - buildInputs = [ - pkgs.hugo - pkgs.nodejs - ]; -} diff --git a/flake.lock b/flake.lock new file mode 100644 index 0000000..0a20125 --- /dev/null +++ b/flake.lock @@ -0,0 +1,61 @@ +{ + "nodes": { + "flake-utils": { + "inputs": { + "systems": "systems" + }, + "locked": { + "lastModified": 1731533236, + "narHash": "sha256-l0KFg5HjrsfsO/JpG+r7fRrqm12kzFHyUHqHCVpMMbI=", + "owner": "numtide", + "repo": "flake-utils", + "rev": "11707dc2f618dd54ca8739b309ec4fc024de578b", + "type": "github" + }, + "original": { + "owner": "numtide", + "repo": "flake-utils", + "type": "github" + } + }, + "nixpkgs": { + "locked": { + "lastModified": 1737597992, + "narHash": "sha256-FECKBxkd+w5I/fhsquthDiw/r/MdCpqmKikBU9yQGug=", + "owner": "nixos", + "repo": "nixpkgs", + "rev": "d0bb4699177f691c8e558b32b3bdc38bc112f76f", + "type": "github" + }, + "original": { + "owner": "nixos", + "ref": "nixos-unstable-small", + "repo": "nixpkgs", + "type": "github" + } + }, + "root": { + "inputs": { + "flake-utils": "flake-utils", + "nixpkgs": "nixpkgs" + } + }, + "systems": { + "locked": { + "lastModified": 1681028828, + "narHash": "sha256-Vy1rq5AaRuLzOxct8nz4T6wlgyUR7zLU309k9mBC768=", + "owner": "nix-systems", + "repo": "default", + "rev": "da67096a3b9bf56a91d16901293e51ba5b49a27e", + "type": "github" + }, + "original": { + "owner": "nix-systems", + "repo": "default", + "type": "github" + } + } + }, + "root": "root", + "version": 7 +} diff --git a/flake.nix b/flake.nix new file mode 100644 index 0000000..79685b8 --- /dev/null +++ b/flake.nix @@ -0,0 +1,35 @@ +{ + inputs = { + nixpkgs.url = "github:nixos/nixpkgs/nixos-unstable-small"; + flake-utils.url = "github:numtide/flake-utils"; + }; + outputs = { self, nixpkgs, flake-utils }: + flake-utils.lib.eachDefaultSystem (system: + let + pkgs = import nixpkgs { inherit system; }; + buildInputs = with pkgs; [ hugo nodejs ]; + in with pkgs; { + devShells.default = mkShell { inherit buildInputs; }; + packages.default = stdenvNoCC.mkDerivation { + name = "millironx-pages"; + src = self; + inherit buildInputs; + phases = [ "unpackPhase" "buildPhase" "installPhase" ]; + buildPhase = '' + runHook preBuild + + HUGO_ENV=production HUGO_ENVIRONMENT=production hugo --minify + + runHook postBuild + ''; + installPhase = '' + runHook preInstall + + mkdir -p $out + cp -r public/* $out/ + + runHook postInstall + ''; + }; + }); +} diff --git a/layouts/_default/_markup/render-blockquote.html b/layouts/_default/_markup/render-blockquote.html new file mode 100644 index 0000000..5f616ba --- /dev/null +++ b/layouts/_default/_markup/render-blockquote.html @@ -0,0 +1,22 @@ +
+
+ {{ .Text }} +
+ {{ if .Attributes.author }} +
+ {{ .Attributes.author | safeHTML }} + {{ if .Attributes.work }} + in + + {{ if .Attributes.citelink }} + + {{ .Attributes.work | safeHTML }} + + {{ else }} + {{ .Attributes.work | safeHTML }} + {{ end }} + + {{ end }} +
+ {{ end }} +
diff --git a/layouts/_default/_markup/render-link.html b/layouts/_default/_markup/render-link.html new file mode 100644 index 0000000..33e0aa5 --- /dev/null +++ b/layouts/_default/_markup/render-link.html @@ -0,0 +1,12 @@ +{{- $u := urls.Parse .Destination -}} + + {{- with .Text }}{{ . }}{{ end -}} + +{{- /* chomp trailing newline */ -}} diff --git a/layouts/_default/baseof.html b/layouts/_default/baseof.html index 41833a3..18d64d8 100644 --- a/layouts/_default/baseof.html +++ b/layouts/_default/baseof.html @@ -7,126 +7,96 @@ {{ with .Description }} {{ end }} - {{ .Title }} - {{ .Site.Title }} - {{ $twbssass := resources.Get "styles/mix-twbs.scss" | resources.ToCSS | minify | resources.PostProcess }} - + + {{ if .Title }} + {{ block "title" . }}{{ .Title }}{{ end }} + - + {{ end }} + {{ .Site.Title }} + + {{ partial "favicon.html" . }} + {{ $twbssass := resources.Get "styles/millironx.css" }} + {{ $twbssass = + $twbssass | minify + }} + + {{ block "extraCss" . }}{{ end }} + {{ range .AlternativeOutputFormats -}} + + {{ end }} + {{ template "_internal/opengraph.html" . }} + {{ template "_internal/schema.html" . }} + {{ template "_internal/twitter_cards.html" . }} {{ $millironx := resources.Get "graphics/millironx.svg" }} -
-
+
+
+ + Milliron X + +

Milliron X

+
+
{{ partial "sidebar" . }} -
-
-
-

- - Milliron X - -   Milliron X -

-
-
- {{ block "main" . }} -
-
- {{ .Content }} -
-
- {{ end }} -
- -
-
+
{{ block "main" . }}{{ .Content }}{{ end }}
+
+ {{ $brandedbull := resources.Get "graphics/brandedbull.svg" }} + {{ $brandedbullsmall := $brandedbull | resources.Minify }} +
+ +
+
- - {{ $jquery := resources.Get "scripts/jquery/jquery.min.js" }} - {{ $jqmaskjs := resources.Get "scripts/jquery-mask-plugin/jquery.mask.min.js" }} - {{ $fittextjs := resources.Get "scripts/fittext/jquery.fittext.js" | minify }} - {{ $scrolljs := resources.Get "scripts/scroll-effect.js" | minify }} - {{ $maskjs := resources.Get "scripts/phone-masking.js" | minify }} - {{ $jquerybundle := slice $jquery $jqmaskjs $fittextjs $scrolljs $maskjs | resources.Concat "js/jquery-bundle.js" }} - + {{ with .Params.validation }}{{- partial "form-validation.html" -}}{{ end }} - - {{ $popperjs := resources.Get "scripts/popper/popper.min.js" }} - {{ $twbsjs := resources.Get "scripts/bootstrap/bootstrap.min.js" }} - {{ $ttjs := resources.Get "scripts/tooltip-enable.js" | minify }} - {{ $bootstrapbundle := slice $popperjs $twbsjs $ttjs | resources.Concat "js/bootstrap-bundle.js" }} - - - - {{ $masonryjs := resources.Get "scripts/masonry/masonry.pkgd.min.js" }} - + - - {{ partial "extras-modal" . }} +
+

Important notice from the lawyers

+

+ All content on this site is designed for humans only. If you are not + human, you are in violation of the Billy Crystal Rescue Act of 1991, and + should leave this site immediately. An alternate version of this site is + available for ruminants to browse at + babble.millironx.com. +

+
diff --git a/layouts/_default/category.atom.xml b/layouts/_default/category.atom.xml new file mode 100644 index 0000000..188e4cb --- /dev/null +++ b/layouts/_default/category.atom.xml @@ -0,0 +1,6 @@ +{{- printf "" | safeHTML }} + + {{ partial "frontmatter.atom.xml" . }} + {{ with .Title }}All {{ . | pluralize | lower }} on {{ end }}{{ .Site.Title }} + {{ partial "pagelist.atom.xml" . }} + diff --git a/layouts/_default/index.atom.xml b/layouts/_default/index.atom.xml new file mode 100644 index 0000000..1db6d65 --- /dev/null +++ b/layouts/_default/index.atom.xml @@ -0,0 +1,6 @@ +{{- printf "" | safeHTML }} + + {{ partial "frontmatter.atom.xml" . }} + All content on {{ .Site.Title }} + {{ partial "pagelist.atom.xml" . }} + diff --git a/layouts/_default/index.html b/layouts/_default/index.html new file mode 100644 index 0000000..4342466 --- /dev/null +++ b/layouts/_default/index.html @@ -0,0 +1,22 @@ +{{ define "extraCss" }} + {{ $scrollCss := resources.Get "styles/scrolling-header.css" | minify }} + +{{ end }} + +{{ define "main" }} + {{ partial "scrolling-image-header" . }} +
+
+ {{ block "content" . }} + {{ .Content }} + {{ end }} +
+ +

Recent activity

+ {{ partial "rss-subscribe-link.html" . }} + {{ $pageinator := .Paginate .Site.RegularPages }} + {{ range $pageinator.Pages }} + {{ partial "itemcard.html" . }} + {{ end }} +
+{{ end }} diff --git a/layouts/_default/index.manifest.json b/layouts/_default/index.manifest.json new file mode 100644 index 0000000..f105f26 --- /dev/null +++ b/layouts/_default/index.manifest.json @@ -0,0 +1,29 @@ +{ + "name": "{{ .Site.Title }}", + "short_name": "{{ .Site.Title }}", + "icons": [ + {{ $pngIcon := resources.Get "graphics/millironx-icon.png" }} + {{ $sizes := slice 192 512 }} + {{ range $size := $sizes }} + {{ $resized := $pngIcon.Resize (printf "%dx%d" $size $size) }} + {{ $icon := $resized.Content | resources.FromString (printf "android-chrome-%dx%d.png" $size $size) }} + { + "src": "{{ $icon.Permalink }}", + "type": "image/png", + "sizes": "{{ $size }}x{{ $size }}" + }, + {{ end }} + {{ $maskIconResized := $pngIcon.Resize "512x512" }} + {{ $maskIcon := $maskIconResized.Content | resources.FromString "android-chrome-mask.png" }} + { + "src": "{{ $maskIcon.Permalink }}", + "type": "image/png", + "sizes": "512x512", + "purpose": "maskable" + } + ], + "start_url": ".", + "display": "standalone", + "theme_color": "#6a1911", + "background_color": "#ffffff" +} diff --git a/layouts/_default/list.html b/layouts/_default/list.html index fb5e9aa..c6c4217 100644 --- a/layouts/_default/list.html +++ b/layouts/_default/list.html @@ -1,64 +1,34 @@ +{{ define "title" }} + {{- with .Data.Singular -}} + {{- . | humanize -}}: + {{ end }} + {{ .Title }} +{{ end }} + +{{ define "extraCss" }} + {{ $scrollCss := resources.Get "styles/scrolling-header.css" | minify }} + +{{ end }} + {{ define "main" }} {{ partial "scrolling-image-header" . }} -
-
- {{ block "content" . }} - {{ .Content }} - {{ end }} -
+
+ {{ $pageinator := .Paginate .Pages }} -
- {{ range .Pages }} -
-
- {{ partial "category-button" . }} + {{ if not ($pageinator.HasPrev) }} +
+ {{ block "content" . }} + {{ .Content }} + {{ end }} +
+ {{ end }} + {{ partial "rss-subscribe-link.html" . }} -
- {{ partial "list-item-thumbnail" . }} + {{ range $pageinator.Pages }} + {{ partial "itemcard.html" . }} + {{ end }} - {{/* Prefer full-text links over local ones */}} - {{ $link := default .RelPermalink (index .Params "link") }} -

{{ .Title }}

- -
- {{ dateFormat "02 Jan 2006" .Date }} -
- - {{ range (.GetTerms "people") }} - {{ .LinkTitle }} - {{ end }} - - -

- {{ .Summary }} - Read more » -

-
- - -
- -
- - {{ end }} -
- + {{ template "_internal/pagination.html" . }}
{{ end }} diff --git a/layouts/_default/section.atom.xml b/layouts/_default/section.atom.xml new file mode 100644 index 0000000..14e86d9 --- /dev/null +++ b/layouts/_default/section.atom.xml @@ -0,0 +1,6 @@ +{{- printf "" | safeHTML }} + + {{ partial "frontmatter.atom.xml" . }} + {{ with .Title }}{{ . }} on {{ end }}{{ .Site.Title }} + {{ partial "pagelist.atom.xml" . }} + diff --git a/layouts/_default/single.html b/layouts/_default/single.html index 3c39c53..e0e8308 100644 --- a/layouts/_default/single.html +++ b/layouts/_default/single.html @@ -1,7 +1,3 @@ {{ define "main" }} -
-
- {{ .Content }} -
-
+ {{ .Content }} {{ end }} diff --git a/layouts/_default/sitemap.xml b/layouts/_default/sitemap.xml new file mode 100644 index 0000000..8716a46 --- /dev/null +++ b/layouts/_default/sitemap.xml @@ -0,0 +1,27 @@ +{{ printf "" | safeHTML }} + + {{ range .Pages }} + {{- if or (not .Params.link) (findRE `^/` .Params.link 1) -}} + + + {{- with .Params.link -}} + {{- replace (print $.Site.BaseURL .) "//" "/" -}} + {{- else -}} + {{- .Permalink -}} + {{- end -}} + + {{ if not .Lastmod.IsZero }} + {{ .Lastmod.Format "2006-01-02T15:04:05-07:00" | safeHTML }} + {{ end }} + {{ with .Sitemap.ChangeFreq }} + {{ . }} + {{ end }} + + {{ end }} + {{ end }} + diff --git a/layouts/academia/single.html b/layouts/academia/single.html index 9466a74..66ffa1a 100644 --- a/layouts/academia/single.html +++ b/layouts/academia/single.html @@ -1,26 +1,51 @@ {{ define "main" }} -
-
-
- {{ .Params.journal }}{{ with .Params.location }}: {{ . }}{{ end }} -
-

{{ .Title }}

-

- -

+

+ {{ with .Date }} + + {{ end }} +  ˙  + {{ range (.GetTerms "tags") }} + {{- partial "fa.html" "tag" }} + {{ .LinkTitle | lower }} + {{ end }} +  ˙  + {{ partial "fa.html" "link" }} Permalink +

+
{{ .Content }} {{ with .Params.link }} -
- {{ . }} - -
+ {{ . }} + {{ end }}
diff --git a/layouts/partials/academia/list-single.html b/layouts/partials/academia/list-single.html deleted file mode 100644 index bfc6c0b..0000000 --- a/layouts/partials/academia/list-single.html +++ /dev/null @@ -1,74 +0,0 @@ -
-
- {{ if eq .Params.medium "paper" }} - {{ .Scratch.Set "fa" "fa-book" }} - {{ else if eq .Params.medium "poster" }} - {{ .Scratch.Set "fa" "fa-presentation" }} - {{ else if eq .Params.medium "thesis" }} - {{ .Scratch.Set "fa" "fa-graduation-cap" }} - {{ else if eq .Params.medium "presentation" }} - {{ .Scratch.Set "fa" "fa-podium" }} - {{ else }} - {{ .Scratch.Set "fa" "fa-notebook" }} - {{ end }} - - {{ $fa := (.Scratch.Get "fa") }} - - -

- -

- {{ with .Params.link }} - - {{ end }} -
-
-

- - {{ .Title }} - -

- {{ $authlist := .Params.authors }} - {{ range $idx, $auth := .Params.authors }} - {{ if and (eq $idx (sub (len $authlist) 1)) (gt 1 (len $authlist)) }} - and - {{ end }} - {{- if eq $auth "Thomas A. Christensen II" }} - {{ $auth }} - {{- else }} - {{ $auth }} - {{- end }} - {{- if lt $idx (sub (len $authlist) 1) -}} - , - {{- end }} - {{ end }} -
- {{ .Params.journal }}: - {{ .Params.location }} - ({{ dateFormat "02 Jan 2006" .Params.date }}) -
- {{ with .Params.keywords }} - Keywords: - {{ range . }} - {{ . }} - {{ end }} -
- {{ end }} - {{ if eq (.Scratch.Get "showAbstract") true }} -
- Abstract - {{ .Content }} -
- {{ end }} -
-
diff --git a/layouts/partials/account.html b/layouts/partials/account.html new file mode 100644 index 0000000..bd6514a --- /dev/null +++ b/layouts/partials/account.html @@ -0,0 +1,48 @@ +{{ $icons := dict + "chocolatey" "candy-bar" + "codeberg" "codeberg" + "ebay" "ebay" + "google-scholar" "google-scholar" + "github" "github" + "gitlab" "gitlab" + "hacker-news" "hacker-news" + "internet-archive" "university" + "matrix" "matrix" + "orcid" "orcid" + "quay" "circle-quarters" + "spotify" "spotify" + "steam" "steam" + "vimeo" "vimeo" + "zotero" "zotero" +}} + +{{ $urlBases := dict + "chocolatey" "https://community.chocolatey.org/profiles/" + "codeberg" "https://codeberg.org/" + "ebay" "https://www.ebay.com/usr/" + "google-scholar" "https://scholar.google.com/citations?user=" + "github" "https://github.com/" + "gitlab" "https://gitlab.com/" + "hacker-news" "https://news.ycombinator.com/user?id=" + "internet-archive" "https://archive.org/details/@" + "matrix" "https://matrix.to/#/" + "orcid" "https://orcid.org/" + "quay" "https://quay.io/user/" + "spotify" "https://open.spotify.com/user/" + "steam" "https://steamcommunity.com/id/" + "vimeo" "https://vimeo.com/" + "zotero" "https://www.zotero.org/" +}} + +{{ $icon := index $icons .account }} +{{ $urlBase := index $urlBases .account }} + +{{ $userURL := print $urlBase .username }} + + +{{ partial "fa.html" $icon }} diff --git a/layouts/partials/category-button.html b/layouts/partials/category-button.html index e6c5d7c..95032e8 100644 --- a/layouts/partials/category-button.html +++ b/layouts/partials/category-button.html @@ -1,27 +1,23 @@ -
- {{ with .Param "categories" }} - {{ range $i, $category := . }} - {{ if eq $i 0 }} - {{ with $.Site.GetPage (printf "/%s/%s" "categories" $category) }} - {{ $iconDictionary := dict - "video" "fad fa-video" - "paper" "fad fa-book" - "poster" "fad fa-presentation" - "thesis" "fad fa-graduation-cap" - "presentation" "fad fa-podium" - "web" "fad fa-globe" - }} - {{ $categoryIcon := index $iconDictionary $category }} - - - - {{ end }} - {{ end }} - {{ end }} +{{ range first 1 (.Param "categories") }} + {{ $category := . }} + {{ with $.Site.GetPage (printf "/%s/%s" "categories" .) }} + {{ $iconDictionary := dict + "video" "video" + "paper" "book" + "poster" "presentation" + "thesis" "graduation-cap" + "presentation" "podium" + "web" "globe" + "blog" "block-quote" + "code" "code" + }} + {{ $categoryIcon := index $iconDictionary $category }} + + {{- partial "fa.html" $categoryIcon -}} + {{ end }} -
+{{ end }} diff --git a/layouts/partials/extras-modal.html b/layouts/partials/extras-modal.html deleted file mode 100644 index ebea7e3..0000000 --- a/layouts/partials/extras-modal.html +++ /dev/null @@ -1,247 +0,0 @@ - diff --git a/layouts/partials/fa.html b/layouts/partials/fa.html new file mode 100644 index 0000000..540a166 --- /dev/null +++ b/layouts/partials/fa.html @@ -0,0 +1,4 @@ +{{- $fontAwesomePath := print "assets/graphics/fa/" . ".svg" -}} + + {{- readFile $fontAwesomePath | safeHTML -}} + diff --git a/layouts/partials/favicon.html b/layouts/partials/favicon.html new file mode 100644 index 0000000..a8baf3d --- /dev/null +++ b/layouts/partials/favicon.html @@ -0,0 +1,8 @@ + +{{ $svgIcon := resources.Get "graphics/millironx-icon.svg" }} + +{{ $pngIcon := resources.Get "graphics/millironx-icon.png" }} +{{ $appleSizedIcon := $pngIcon.Resize "180x180" }} +{{ $appleTouchIcon := $appleSizedIcon.Content | resources.FromString "apple-touch-icon.png" }} + + diff --git a/layouts/partials/form-validation.html b/layouts/partials/form-validation.html new file mode 100644 index 0000000..0c84f23 --- /dev/null +++ b/layouts/partials/form-validation.html @@ -0,0 +1,3 @@ + +{{ $maskjs := resources.Get "scripts/phone-masking.js" | minify }} + diff --git a/layouts/partials/frontmatter.atom.xml b/layouts/partials/frontmatter.atom.xml new file mode 100644 index 0000000..9f94518 --- /dev/null +++ b/layouts/partials/frontmatter.atom.xml @@ -0,0 +1,12 @@ + {{- $atomDateFormat := "2006-01-02T15:04:05-07:00" }} + {{- with .Site.Hugo.Version }} + Hugo v{{ . }} + {{- end }} + {{ .Permalink }} + {{- with .OutputFormats.Get "atom" }} + + {{- end }} + {{- range .AlternativeOutputFormats }} + + {{- end }} + {{ now.Format $atomDateFormat }} diff --git a/layouts/partials/itemcard.html b/layouts/partials/itemcard.html new file mode 100644 index 0000000..59700d1 --- /dev/null +++ b/layouts/partials/itemcard.html @@ -0,0 +1,92 @@ +
+ {{ with .Param "fa-thumbnail" }} +
+
+ + {{- partial "fa.html" . -}} + +
+
+ {{ end }} + + {{/* Thumbnail images should be stored as 'thumbnail'.* in the page bundle, but + historically they might have been referenced as 'thumbnail' in the front + matter, or (even more historically) as 'cardImage'. Use scratch to + normalize all these different systems. + */}} + {{ $bundleGlob := "thumbnail.*" }} + {{ $frontThumbGlob := print "images/" (.Params.thumbnail) ".*" }} + {{ $frontCardGlob := print "images/" (.Params.cardImage) ".jpg" }} + {{ $allThumbnailGlob := print "{" $frontThumbGlob "," $frontCardGlob "," $bundleGlob "}" }} + {{ with .Resources.GetMatch $allThumbnailGlob }} + {{ $thumbnail := . }} + {{ $thumbnailResized := $thumbnail.Resize "600x" }} + + +
+ Thumbnail of {{ .Title }} +
+ {{ end }} + + +
+
+ {{/* Prefer full-text links over local ones */}} +
+ {{ $link := default .Permalink (index .Params "link") }} +

{{ .Title }}

+ + {{ with .Date }} + + {{ end }} +
+ + {{ partial "category-button" . }} + +
+ +
+ {{ range (.GetTerms "people") }} + + {{ end }} + + +

+ {{ .Content | strings.Truncate 500 }} + Read more » +

+ + +
+
+
+ diff --git a/layouts/partials/list-item-thumbnail.html b/layouts/partials/list-item-thumbnail.html deleted file mode 100644 index 44bed22..0000000 --- a/layouts/partials/list-item-thumbnail.html +++ /dev/null @@ -1,26 +0,0 @@ -{{ with .Param "fa-thumbnail" }} -
- - - -
-{{ end }} - -{{/* Thumbnail images should be stored as 'thumbnail'.* in the page bundle, but - historically they might have been referenced as 'thumbnail' in the front - matter, or (even more historically) as 'cardImage'. Use scratch to - normalize all these different systems. -*/}} -{{ $bundleGlob := "thumbnail.*" }} -{{ $frontThumbGlob := print "images/" (.Params.thumbnail) ".*" }} -{{ $frontCardGlob := print "images/" (.Params.cardImage) ".jpg" }} -{{ $allThumbnailGlob := print "{" $frontThumbGlob "," $frontCardGlob "," $bundleGlob "}" }} -{{ with .Resources.GetMatch $allThumbnailGlob }} - {{ $thumbnail := . }} - {{ $thumbnailResized := $thumbnail.Resize "600x" }} - Thumbnail of {{ .Title }} -{{ end }} diff --git a/layouts/partials/pagelist.atom.xml b/layouts/partials/pagelist.atom.xml new file mode 100644 index 0000000..54a9ec4 --- /dev/null +++ b/layouts/partials/pagelist.atom.xml @@ -0,0 +1,49 @@ +{{- $atomDateFormat := "2006-01-02T15:04:05-07:00" }} +{{- $pctx := . }} +{{- if .IsHome }}{{ $pctx = .Site }}{{ end }} +{{- $pages := slice }} +{{- if or $.IsHome $.IsSection }} +{{- $pages = $pctx.RegularPages }} +{{- else }} +{{- $pages = $pctx.Pages }} +{{- end }} +{{- $limit := .Site.Config.Services.RSS.Limit }} +{{- if ge $limit 1 }} +{{- $pages = $pages | first $limit }} +{{- end }} + +{{- range $pages }} +{{/* If a page doesn't have a date, then it's a meta page and should be excluded */}} +{{- if .Date }} + + {{ .Permalink }} + {{- $link := default .Permalink (index .Params "link") }} + + {{ .Title }} + {{ .Date.Format $atomDateFormat }} + {{ .Lastmod.Format $atomDateFormat }} + {{- range (.GetTerms "people") }} + + {{ .LinkTitle }} + {{ .Permalink }} + + {{- end }} + {{- range (.GetTerms "categories") }} + + {{- end }} + {{- range (.GetTerms "tags") }} + + {{- end }} + {{- with .Summary }} + + {{ . | plainify | htmlUnescape }} + + {{- end }} + {{- with .Content }} + + {{ . | transform.XMLEscape | safeHTML }} + + {{- end }} + +{{- end }} +{{- end }} diff --git a/layouts/partials/rss-subscribe-link.html b/layouts/partials/rss-subscribe-link.html new file mode 100644 index 0000000..ce70769 --- /dev/null +++ b/layouts/partials/rss-subscribe-link.html @@ -0,0 +1,12 @@ +{{ if not .Params.suppressRss }} + {{ range .AlternativeOutputFormats -}} + + {{ partial "fa.html" "rss" }} + Subscribe + + {{ end }} +{{ end }} diff --git a/layouts/partials/scrolling-image-header.html b/layouts/partials/scrolling-image-header.html index 761786d..60d5187 100644 --- a/layouts/partials/scrolling-image-header.html +++ b/layouts/partials/scrolling-image-header.html @@ -1,20 +1,46 @@ -{{ $millironx := resources.Get "graphics/millironx.svg" }} -
-
-

- {{ default .Title (safeHTML (.Param "motto")) }} -

+{{ $thumbnailImage := .Resources.GetMatch "*thumbnail*" }} +{{ with $thumbnailImage }} + {{ $croppedImage := $thumbnailImage.Fill "1500x500 center" }} + +{{ else }} + {{ with .Param "images" }} + {{ $firstImage := first 1 . }} + {{ range $firstImage }} + {{ $imageSource := print "images/" . }} + {{ $imageResource := resources.Get $imageSource }} + {{ with $imageResource }} + {{ $croppedImage := $imageResource.Fill "1500x500 center" }} + + {{ end }} + {{ end }} + {{ end }} +{{ end }} + + +
+
+
+

+ {{ with .Params.motto }} + {{ safeHTML . }} + {{ else with .Data.Singular }} + {{- . | humanize -}}: + {{ $.Title }} + {{ else }} + {{ .Title }} + {{ end }} +

+
- {{ $imgsrc := print "images/" (.Param "cardImage") ".jpg" }} - {{ $mainimg := resources.Get $imgsrc }} - {{ $blurimg := $mainimg.Filter (images.GaussianBlur 100) }} -
-
-
diff --git a/layouts/partials/sidebar.html b/layouts/partials/sidebar.html index ae469d4..307741d 100644 --- a/layouts/partials/sidebar.html +++ b/layouts/partials/sidebar.html @@ -1,48 +1,19 @@ {{ $millironx := resources.Get "graphics/millironx.svg" }} {{ $currentPage := . }} - diff --git a/layouts/people/term.atom.xml b/layouts/people/term.atom.xml new file mode 100644 index 0000000..70363c3 --- /dev/null +++ b/layouts/people/term.atom.xml @@ -0,0 +1,6 @@ +{{- printf "" | safeHTML }} + + {{ partial "frontmatter.atom.xml" . }} + {{ with .Title }}{{ . }}'s activity on {{ end }}{{ .Site.Title }} + {{ partial "pagelist.atom.xml" . }} + diff --git a/layouts/people/term.html b/layouts/people/term.html new file mode 100644 index 0000000..6d3bf99 --- /dev/null +++ b/layouts/people/term.html @@ -0,0 +1,109 @@ +{{ define "title" }} + About + {{ .Title }} +{{ end }} + +{{ define "main" }} + {{ $pageinator := .Paginate .Pages }} +
+
+
+ {{ with .Resources.GetMatch "thumbnail.*" }} + {{ $thumbnail := . }} + {{ $thumbnailResized := $thumbnail.Fill "600x600" }} + Photo of {{ $.Title }} + {{ end }} + + +

+ {{ .Title }} +

+ {{ with .Params.homepage }} + {{ partial "fa.html" "link" }} + + {{ . }} + + {{ end }} +
+
+ +
+ {{ if not ($pageinator.HasPrev) }} + + {{ with .Content }} +

Bio

+
+ {{ . }} +
+ {{ end }} + + {{ with .Params.accounts }} + + {{ end }} + + {{ with .Params.gpg_key }} + + {{ end }} + + {{ with .Params.crypto }} + + {{ end }} + + {{ end }} + + +

Latest Activity

+ + {{ partial "rss-subscribe-link.html" . }} + {{ range $pageinator.Pages }} + {{ partial "itemcard.html" . }} + {{ end }} + {{ template "_internal/pagination.html" . }} + +
+
+{{ end }} diff --git a/layouts/posts/single.html b/layouts/posts/single.html new file mode 100644 index 0000000..49151c4 --- /dev/null +++ b/layouts/posts/single.html @@ -0,0 +1,6 @@ +{{ define "main" }} +
+

{{ .Title }}

+ {{ .Content }} +
+{{ end }} diff --git a/layouts/shortcodes/abbr.html b/layouts/shortcodes/abbr.html new file mode 100644 index 0000000..1523598 --- /dev/null +++ b/layouts/shortcodes/abbr.html @@ -0,0 +1,3 @@ + + {{ .Inner | markdownify }} + diff --git a/layouts/shortcodes/blockquote.html b/layouts/shortcodes/blockquote.html new file mode 100644 index 0000000..d88d225 --- /dev/null +++ b/layouts/shortcodes/blockquote.html @@ -0,0 +1,9 @@ +
+ {{ .Inner | markdownify }} + {{ with .Get 0 }} +
+ + {{ . | markdownify }} + + {{ end }} +
diff --git a/layouts/shortcodes/character-dialog.html b/layouts/shortcodes/character-dialog.html new file mode 100644 index 0000000..bb1b9b0 --- /dev/null +++ b/layouts/shortcodes/character-dialog.html @@ -0,0 +1,24 @@ +{{ $character := .Get 0 }} +{{ $position := .Get 1 }} +{{ $emotion := .Get 2 }} + +{{ $resourceName := print "characters/" $character "/" $position "-" $emotion ".png" }} +{{ $characterImageResource := resources.Get $resourceName }} + +{{ $resizedCharacterImage := $characterImageResource.Resize "x100" }} + + +
+
+ thumbnail of {{ $character }} in {{ $emotion }} state +
+
+
+ {{ $character | humanize }} +
+
{{ .Inner | markdownify }}
+
+
diff --git a/layouts/shortcodes/dfn.html b/layouts/shortcodes/dfn.html new file mode 100644 index 0000000..8ed0ad6 --- /dev/null +++ b/layouts/shortcodes/dfn.html @@ -0,0 +1 @@ +{{ .Inner }} diff --git a/layouts/shortcodes/fa.html b/layouts/shortcodes/fa.html new file mode 100644 index 0000000..454b184 --- /dev/null +++ b/layouts/shortcodes/fa.html @@ -0,0 +1,2 @@ +{{- $faName := .Get 0 -}} +{{- partial "fa.html" $faName -}} diff --git a/layouts/shortcodes/imgproc.html b/layouts/shortcodes/imgproc.html index f83f908..c097a73 100644 --- a/layouts/shortcodes/imgproc.html +++ b/layouts/shortcodes/imgproc.html @@ -14,10 +14,10 @@ {{ else }} {{ errorf "Invalid image processing command: Must be one of Crop, Fit, Fill or Resize." }} {{ end }} -
+
diff --git a/layouts/tags/term.atom.xml b/layouts/tags/term.atom.xml new file mode 100644 index 0000000..9c738bd --- /dev/null +++ b/layouts/tags/term.atom.xml @@ -0,0 +1,6 @@ +{{- printf "" | safeHTML }} + + {{ partial "frontmatter.atom.xml" . }} + {{ with .Title }}All content tagged "{{ . | lower }}" on {{ end }}{{ .Site.Title }} + {{ partial "pagelist.atom.xml" . }} + diff --git a/layouts/videos/single.html b/layouts/videos/single.html deleted file mode 100644 index 4d0a619..0000000 --- a/layouts/videos/single.html +++ /dev/null @@ -1,32 +0,0 @@ -{{ define "main" }} -
-
- {{ if eq .Params.storage "yt" }} - {{ .Scratch.Set "embedLink" (print "https://www.youtube-nocookie.com/embed/" .Params.storageId) }} - {{ end }} - {{ if eq .Params.storage "vimeo" }} - {{ .Scratch.Set "embedLink" (print "https://player.vimeo.com/video/" .Params.storageId "?color=ffffff") }} - {{ end }} - {{ if eq .Params.storage "lbry" }} - {{ .Scratch.Set "embedLink" (print "https://odysee.com/$/embed/" .Params.storageId) }} - {{ end }} - {{ if eq .Params.storage "peertube" }} - {{ .Scratch.Set "embedLink" (print "https://video.millironx.com/videos/embed/" .Params.storageId) }} - {{ end }} -
-
-
- -
-
-
- - {{ .Content }} -
-
-{{ end }} diff --git a/package-lock.json b/package-lock.json index f5f1c78..6ffef19 100644 --- a/package-lock.json +++ b/package-lock.json @@ -8,20 +8,6 @@ "name": "millironx.github.io", "version": "0.0.0", "license": "MIT", - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.2.1", - "@fortawesome/free-brands-svg-icons": "^6.2.1", - "@openfonts/nunito-sans_all": "^1.44.2", - "@popperjs/core": "^2.11.4", - "bootstrap": "^5.1.3", - "bootswatch": "^5.2.2", - "fittext.js": "^1.2.0", - "jquery": "^3.6.0", - "jquery-mask-plugin": "^1.14.16", - "masonry-layout": "^4.2.2", - "postcss": "^8.4.12", - "postcss-purgecss": "^2.0.3" - }, "devDependencies": { "husky": "^8.0.1", "lint-staged": "^13.0.3", @@ -30,95 +16,35 @@ "prettier-plugin-toml": "^0.3.1" } }, - "node_modules/@fortawesome/fontawesome-common-types": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.3.0.tgz", - "integrity": "sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==", - "hasInstallScript": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/fontawesome-svg-core": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.3.0.tgz", - "integrity": "sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@fortawesome/free-brands-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.3.0.tgz", - "integrity": "sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w==", - "hasInstallScript": true, - "dependencies": { - "@fortawesome/fontawesome-common-types": "6.3.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/@openfonts/nunito-sans_all": { - "version": "1.44.2", - "resolved": "https://registry.npmjs.org/@openfonts/nunito-sans_all/-/nunito-sans_all-1.44.2.tgz", - "integrity": "sha512-I4yZWRUcv0aQSpOlTIbXSLrjXQ1jGmwvDFh248ZaNyMTXl2bB0kW4LbUS3dYb+0craO7nwkcMtDAPLbqEo/Rwg==" - }, - "node_modules/@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/popperjs" - } - }, "node_modules/@toml-tools/lexer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@toml-tools/lexer/-/lexer-0.3.1.tgz", - "integrity": "sha512-CCKHQb5OWpgFu47MQ2rcql4AnE9GaehNk/c1oJOyOBovED6XmdzQPXsvPSu+NJ9lToqJNoX+nLXQsB8WyQGdzQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@toml-tools/lexer/-/lexer-0.3.5.tgz", + "integrity": "sha512-549zoTUhz4WvSNX0U+G5M+SqCPBVaLyKvE3Rfi43ww6LyJt98cwZR9kMBjkcMS28/cyLgIiShBbS12mqeo4Vsw==", "dev": true, "dependencies": { - "chevrotain": "4.1.1" + "chevrotain": "^4.1.1" } }, "node_modules/@toml-tools/parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@toml-tools/parser/-/parser-0.3.1.tgz", - "integrity": "sha512-vadwVx5TkgByt19dbp/rfIUKPkDdn5werANYvziiGK9wHlqPA0BWnvOloQw/dPDxF31+Ag0+zarXJpPDdRsPPg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@toml-tools/parser/-/parser-0.3.5.tgz", + "integrity": "sha512-ba1GnL5zc+X/nxkzrq+AvdxQv/0lqoI9PM2s6CZFGiKl/ftP49VhojoA/SSdC7FexYczeq/O81jyJk0+oHa+NQ==", "dev": true, "dependencies": { - "@toml-tools/lexer": "^0.3.1", - "chevrotain": "4.1.1" - } - }, - "node_modules/aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "dependencies": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" - }, - "engines": { - "node": ">=8" + "@toml-tools/lexer": "^0.3.5", + "chevrotain": "^4.1.1" } }, "node_modules/ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", "dev": true, "dependencies": { - "type-fest": "^0.21.3" + "type-fest": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" @@ -148,52 +74,6 @@ "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/bootstrap": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", - "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/twbs" - }, - { - "type": "opencollective", - "url": "https://opencollective.com/bootstrap" - } - ], - "peerDependencies": { - "@popperjs/core": "^2.11.6" - } - }, - "node_modules/bootswatch": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-5.2.3.tgz", - "integrity": "sha512-tvnW15WoOY2sEp1uT1ITDQiJy2TekQa+K+Q28WDXibleIxsY0nAoC9IylbnUPD7Q5vkCIclOuBHLVBblJYYPSA==" - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "node_modules/braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -207,81 +87,39 @@ } }, "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", + "dev": true, "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "dependencies": { - "color-convert": "^1.9.0" + "node": "^12.17.0 || ^14.13 || >=16.0.0" }, - "engines": { - "node": ">=4" - } - }, - "node_modules/chalk/node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "dependencies": { - "color-name": "1.1.3" - } - }, - "node_modules/chalk/node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, "node_modules/chevrotain": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-4.1.1.tgz", - "integrity": "sha512-NQky1HQyiAzxsxpq4Ppt47SYO2U3JLtmfs85QPf3kYSzGBjjp5AA8kqjH8hCjGFRpaQ781QOk1ragQIOkBgUTA==", + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-4.8.1.tgz", + "integrity": "sha512-Dd2oHFdscdm8MSmG0ejTXdMlqKR5ryeKuwLpsf1ZOs3l8HD/jPfIY0MYs9Eh4X3gm9h0CR155zpVYFK+uAI3tA==", "dev": true, "dependencies": { - "regexp-to-ast": "0.3.5" - } - }, - "node_modules/clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", - "dev": true, - "engines": { - "node": ">=6" + "regexp-to-ast": "0.4.0" } }, "node_modules/cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", "dev": true, "dependencies": { - "restore-cursor": "^3.1.0" + "restore-cursor": "^4.0.0" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/cli-truncate": { @@ -300,44 +138,21 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "node_modules/commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "dev": true, "engines": { - "node": "^12.20.0 || >=14" + "node": ">=16" } }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, "node_modules/cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -352,17 +167,6 @@ "node": ">= 8" } }, - "node_modules/cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", - "bin": { - "cssesc": "bin/cssesc" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -380,11 +184,6 @@ } } }, - "node_modules/desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==" - }, "node_modules/eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -397,28 +196,21 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/ev-emitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + "node_modules/eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true }, "node_modules/execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -427,7 +219,7 @@ "strip-final-newline": "^3.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": "^14.18.0 || ^16.14.0 || >=18.0.0" }, "funding": { "url": "https://github.com/sindresorhus/execa?sponsor=1" @@ -445,29 +237,6 @@ "node": ">=8" } }, - "node_modules/fittext.js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fittext.js/-/fittext.js-1.2.0.tgz", - "integrity": "sha512-t74oh607jFTvZ1zelX5nVlxrLbk0iREVSgvn5HZhltUj34ANAaFNtORHwmXEHUiPNcZVk252G52hFnFLjLHBqg==" - }, - "node_modules/fizzy-ui-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", - "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", - "dependencies": { - "desandro-matches-selector": "^2.0.0" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/get-size": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", - "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" - }, "node_modules/get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", @@ -480,40 +249,13 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", - "engines": { - "node": ">=4" - } - }, "node_modules/human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true, "engines": { - "node": ">=12.20.0" + "node": ">=14.18.0" } }, "node_modules/husky": { @@ -531,29 +273,6 @@ "url": "https://github.com/sponsors/typicode" } }, - "node_modules/indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "node_modules/is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -593,72 +312,57 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "node_modules/jquery": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", - "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==" - }, - "node_modules/jquery-mask-plugin": { - "version": "1.14.16", - "resolved": "https://registry.npmjs.org/jquery-mask-plugin/-/jquery-mask-plugin-1.14.16.tgz", - "integrity": "sha512-reywdHlYEkPbzWjTpcc1fk9XQ3PLvO5dzEAVqy8zI7NTF22tB1HbeU3iboZTLdkBEPaWAqeI2HtEjsGQ4roZKw==" - }, "node_modules/lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, "engines": { "node": ">=10" } }, "node_modules/lint-staged": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.1.tgz", - "integrity": "sha512-LLJLO0Kdbcv2a+CvSF4p1M7jBZOajKSMpBUvyR8+bXccsqPER0/NxTFQSpNHjqwV9kM3tkHczYerTB5wI+bksQ==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.3.0.tgz", + "integrity": "sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==", "dev": true, "dependencies": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" }, "bin": { "lint-staged": "bin/lint-staged.js" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": "^16.14.0 || >=18.0.0" }, "funding": { "url": "https://opencollective.com/lint-staged" } }, "node_modules/listr2": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", - "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", "dev": true, "dependencies": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" + "wrap-ansi": "^8.1.0" }, "engines": { - "node": "^14.13.1 || >=16.0.0" + "node": ">=16.0.0" }, "peerDependencies": { "enquirer": ">= 2.3.0 < 3" @@ -669,224 +373,25 @@ } } }, - "node_modules/listr2/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/listr2/node_modules/cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "dependencies": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/listr2/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/listr2/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/listr2/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", "dev": true, "dependencies": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" }, "engines": { - "node": ">=10" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/log-update/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/log-update/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/log-update/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/slice-ansi?sponsor=1" - } - }, - "node_modules/log-update/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/log-update/node_modules/wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/masonry-layout": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", - "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", - "dependencies": { - "get-size": "^2.0.2", - "outlayer": "^2.1.0" - } - }, "node_modules/merge-stream": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", @@ -918,43 +423,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "node_modules/nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==", - "bin": { - "nanoid": "bin/nanoid.cjs" - }, - "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/npm-run-path": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", @@ -982,23 +456,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, "node_modules/onetime": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", @@ -1014,39 +471,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/outlayer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", - "dependencies": { - "ev-emitter": "^1.0.0", - "fizzy-ui-utils": "^2.0.0", - "get-size": "^2.0.2" - } - }, - "node_modules/p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "dependencies": { - "aggregate-error": "^3.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", @@ -1056,11 +480,6 @@ "node": ">=8" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "node_modules/picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -1085,71 +504,10 @@ "node": ">=0.10" } }, - "node_modules/postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - ], - "dependencies": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - }, - "engines": { - "node": "^10 || ^12 || >=14" - } - }, - "node_modules/postcss-purgecss": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-purgecss/-/postcss-purgecss-2.0.3.tgz", - "integrity": "sha512-cuQin5PgZzvDe7EjW4S27iM6p4ZNz4iBEPmBrAykXm2WyaBtri1sA4ZVn/zECN7x3uxeADwDq1u4VDY5C9iusg==", - "dependencies": { - "postcss": "7.0.26", - "purgecss": "^2.0.3" - } - }, - "node_modules/postcss-purgecss/node_modules/postcss": { - "version": "7.0.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", - "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - } - }, - "node_modules/postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true, "bin": { "prettier": "bin-prettier.js" @@ -1177,83 +535,36 @@ } }, "node_modules/prettier-plugin-toml": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-0.3.1.tgz", - "integrity": "sha512-j47DEO/dN/acU1nSL/B7q4A4Z2SYJhpWPCLPkcmfAXIQC6A5GD6Ao/bi9HRHZ8ueIDOauqjuAQbnvRxLXMjazA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-0.3.5.tgz", + "integrity": "sha512-yP8dTVjFn1m1RfMAQ2jSjxi41+prv7YSeCwD5k7BCazFDYl+bj1vrEJm8OJTrDa/U20pQsXjYLoVYlHEqEja3Q==", "dev": true, "dependencies": { - "@toml-tools/parser": "^0.3.1", - "prettier": "^1.16.0" - } - }, - "node_modules/prettier-plugin-toml/node_modules/prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true, - "bin": { - "prettier": "bin-prettier.js" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", - "dependencies": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "bin": { - "purgecss": "bin/purgecss" - } - }, - "node_modules/purgecss/node_modules/commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==", - "engines": { - "node": ">= 6" - } - }, - "node_modules/purgecss/node_modules/postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "dependencies": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - }, - "engines": { - "node": ">=6.0.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" + "@toml-tools/lexer": "^0.3.5", + "@toml-tools/parser": "^0.3.5", + "prettier": "^1.16.0 || ^2.0.0" } }, "node_modules/regexp-to-ast": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.3.5.tgz", - "integrity": "sha512-1CJygtdvsfNFwiyjaMLBWtg2tfEqx/jSZ8S6TV+GlNL8kiH8rb4cm5Pb7A/C2BpyM/fA8ZJEudlCwi/jvAY+Ow==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", + "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==", "dev": true }, "node_modules/restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, "node_modules/restore-cursor/node_modules/mimic-fn": { @@ -1286,15 +597,6 @@ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "node_modules/rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, - "dependencies": { - "tslib": "^2.1.0" - } - }, "node_modules/shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -1338,26 +640,10 @@ "url": "https://github.com/chalk/slice-ansi?sponsor=1" } }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true, "engines": { "node": ">=0.6.19" @@ -1381,9 +667,9 @@ } }, "node_modules/strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { "ansi-regex": "^6.0.1" @@ -1407,23 +693,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, "node_modules/to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -1436,16 +705,10 @@ "node": ">=8.0" } }, - "node_modules/tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, "node_modules/type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true, "engines": { "node": ">=10" @@ -1463,11 +726,6 @@ "ulid": "bin/cli.js" } }, - "node_modules/util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -1484,96 +742,26 @@ } }, "node_modules/wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "dependencies": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=10" + "node": ">=12" }, "funding": { "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/wrap-ansi/node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/wrap-ansi/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/wrap-ansi/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrap-ansi/node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, "node_modules/yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true, "engines": { "node": ">= 14" @@ -1581,73 +769,32 @@ } }, "dependencies": { - "@fortawesome/fontawesome-common-types": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-common-types/-/fontawesome-common-types-6.3.0.tgz", - "integrity": "sha512-4BC1NMoacEBzSXRwKjZ/X/gmnbp/HU5Qqat7E8xqorUtBFZS+bwfGH5/wqOC2K6GV0rgEobp3OjGRMa5fK9pFg==" - }, - "@fortawesome/fontawesome-svg-core": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/fontawesome-svg-core/-/fontawesome-svg-core-6.3.0.tgz", - "integrity": "sha512-uz9YifyKlixV6AcKlOX8WNdtF7l6nakGyLYxYaCa823bEBqyj/U2ssqtctO38itNEwXb8/lMzjdoJ+aaJuOdrw==", - "requires": { - "@fortawesome/fontawesome-common-types": "6.3.0" - } - }, - "@fortawesome/free-brands-svg-icons": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/@fortawesome/free-brands-svg-icons/-/free-brands-svg-icons-6.3.0.tgz", - "integrity": "sha512-xI0c+a8xnKItAXCN8rZgCNCJQiVAd2Y7p9e2ND6zN3J3ekneu96qrePieJ7yA7073C1JxxoM3vH1RU7rYsaj8w==", - "requires": { - "@fortawesome/fontawesome-common-types": "6.3.0" - } - }, - "@openfonts/nunito-sans_all": { - "version": "1.44.2", - "resolved": "https://registry.npmjs.org/@openfonts/nunito-sans_all/-/nunito-sans_all-1.44.2.tgz", - "integrity": "sha512-I4yZWRUcv0aQSpOlTIbXSLrjXQ1jGmwvDFh248ZaNyMTXl2bB0kW4LbUS3dYb+0craO7nwkcMtDAPLbqEo/Rwg==" - }, - "@popperjs/core": { - "version": "2.11.6", - "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.6.tgz", - "integrity": "sha512-50/17A98tWUfQ176raKiOGXuYpLyyVMkxxG6oylzL3BPOlA6ADGdK7EYunSa4I064xerltq9TGXs8HmOk5E+vw==" - }, "@toml-tools/lexer": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@toml-tools/lexer/-/lexer-0.3.1.tgz", - "integrity": "sha512-CCKHQb5OWpgFu47MQ2rcql4AnE9GaehNk/c1oJOyOBovED6XmdzQPXsvPSu+NJ9lToqJNoX+nLXQsB8WyQGdzQ==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@toml-tools/lexer/-/lexer-0.3.5.tgz", + "integrity": "sha512-549zoTUhz4WvSNX0U+G5M+SqCPBVaLyKvE3Rfi43ww6LyJt98cwZR9kMBjkcMS28/cyLgIiShBbS12mqeo4Vsw==", "dev": true, "requires": { - "chevrotain": "4.1.1" + "chevrotain": "^4.1.1" } }, "@toml-tools/parser": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@toml-tools/parser/-/parser-0.3.1.tgz", - "integrity": "sha512-vadwVx5TkgByt19dbp/rfIUKPkDdn5werANYvziiGK9wHlqPA0BWnvOloQw/dPDxF31+Ag0+zarXJpPDdRsPPg==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@toml-tools/parser/-/parser-0.3.5.tgz", + "integrity": "sha512-ba1GnL5zc+X/nxkzrq+AvdxQv/0lqoI9PM2s6CZFGiKl/ftP49VhojoA/SSdC7FexYczeq/O81jyJk0+oHa+NQ==", "dev": true, "requires": { - "@toml-tools/lexer": "^0.3.1", - "chevrotain": "4.1.1" - } - }, - "aggregate-error": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", - "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", - "dev": true, - "requires": { - "clean-stack": "^2.0.0", - "indent-string": "^4.0.0" + "@toml-tools/lexer": "^0.3.5", + "chevrotain": "^4.1.1" } }, "ansi-escapes": { - "version": "4.3.2", - "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", - "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-5.0.0.tgz", + "integrity": "sha512-5GFMVX8HqE/TB+FuBJGuO5XG0WrsA6ptUqoODaT/n9mmUaZFkqnBueB4leqGBCmrUHnCnC4PCZTCd0E7QQ83bA==", "dev": true, "requires": { - "type-fest": "^0.21.3" + "type-fest": "^1.0.2" } }, "ansi-regex": { @@ -1662,37 +809,6 @@ "integrity": "sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==", "dev": true }, - "astral-regex": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-2.0.0.tgz", - "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", - "dev": true - }, - "balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "bootstrap": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.2.3.tgz", - "integrity": "sha512-cEKPM+fwb3cT8NzQZYEu4HilJ3anCrWqh3CHAok1p9jXqMPsPTBhU25fBckEJHJ/p+tTxTFTsFQGM+gaHpi3QQ==", - "requires": {} - }, - "bootswatch": { - "version": "5.2.3", - "resolved": "https://registry.npmjs.org/bootswatch/-/bootswatch-5.2.3.tgz", - "integrity": "sha512-tvnW15WoOY2sEp1uT1ITDQiJy2TekQa+K+Q28WDXibleIxsY0nAoC9IylbnUPD7Q5vkCIclOuBHLVBblJYYPSA==" - }, - "brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "requires": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, "braces": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", @@ -1703,68 +819,27 @@ } }, "chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", - "requires": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "dependencies": { - "ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", - "requires": { - "color-convert": "^1.9.0" - } - }, - "color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", - "requires": { - "color-name": "1.1.3" - } - }, - "color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" - }, - "supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", - "requires": { - "has-flag": "^3.0.0" - } - } - } - }, - "chevrotain": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-4.1.1.tgz", - "integrity": "sha512-NQky1HQyiAzxsxpq4Ppt47SYO2U3JLtmfs85QPf3kYSzGBjjp5AA8kqjH8hCjGFRpaQ781QOk1ragQIOkBgUTA==", - "dev": true, - "requires": { - "regexp-to-ast": "0.3.5" - } - }, - "clean-stack": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/clean-stack/-/clean-stack-2.2.0.tgz", - "integrity": "sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==", + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-5.3.0.tgz", + "integrity": "sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==", "dev": true }, - "cli-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", - "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", + "chevrotain": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/chevrotain/-/chevrotain-4.8.1.tgz", + "integrity": "sha512-Dd2oHFdscdm8MSmG0ejTXdMlqKR5ryeKuwLpsf1ZOs3l8HD/jPfIY0MYs9Eh4X3gm9h0CR155zpVYFK+uAI3tA==", "dev": true, "requires": { - "restore-cursor": "^3.1.0" + "regexp-to-ast": "0.4.0" + } + }, + "cli-cursor": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-4.0.0.tgz", + "integrity": "sha512-VGtlMu3x/4DOtIUwEkRezxUZ2lBacNJCHash0N0WeZDBS+7Ux1dm3XWAgWYxLJFMMdOeXMHXorshEFhbMSGelg==", + "dev": true, + "requires": { + "restore-cursor": "^4.0.0" } }, "cli-truncate": { @@ -1777,38 +852,18 @@ "string-width": "^5.0.0" } }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "commander": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", - "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-11.0.0.tgz", + "integrity": "sha512-9HMlXtt/BNoYr8ooyjjNRdIilOTkVJXB+GhxMTtOKwk0R4j4lS4NpjuqmRxroBfnfTSHQIHQB7wryHhXarNjmQ==", "dev": true }, - "concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, "cross-spawn": { "version": "7.0.3", "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", @@ -1820,11 +875,6 @@ "which": "^2.0.1" } }, - "cssesc": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" - }, "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", @@ -1834,11 +884,6 @@ "ms": "2.1.2" } }, - "desandro-matches-selector": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/desandro-matches-selector/-/desandro-matches-selector-2.0.2.tgz", - "integrity": "sha512-+1q0nXhdzg1IpIJdMKalUwvvskeKnYyEe3shPRwedNcWtnhEKT3ZxvFjzywHDeGcKViIxTCAoOYQWP1qD7VNyg==" - }, "eastasianwidth": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", @@ -1851,25 +896,21 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" - }, - "ev-emitter": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/ev-emitter/-/ev-emitter-1.1.1.tgz", - "integrity": "sha512-ipiDYhdQSCZ4hSbX4rMW+XzNKMD1prg/sTvoVmSLkuQ1MVlwjJQQA+sW8tMYR3BLUr9KjodFV4pvzunvRhd33Q==" + "eventemitter3": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", + "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==", + "dev": true }, "execa": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-6.1.0.tgz", - "integrity": "sha512-QVWlX2e50heYJcCPG0iWtf8r0xjEYfz/OYLGDYH+IyjWezzPNxz63qNFOu0l4YftGWuizFVZHHs8PrLU5p2IDA==", + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-7.2.0.tgz", + "integrity": "sha512-UduyVP7TLB5IcAQl+OzLyLcS/l32W/GLg+AhHJ+ow40FOk2U3SAllPwR44v4vmdFwIWqpdwxxpQbF1n5ta9seA==", "dev": true, "requires": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.1", - "human-signals": "^3.0.1", + "human-signals": "^4.3.0", "is-stream": "^3.0.0", "merge-stream": "^2.0.0", "npm-run-path": "^5.1.0", @@ -1887,57 +928,16 @@ "to-regex-range": "^5.0.1" } }, - "fittext.js": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/fittext.js/-/fittext.js-1.2.0.tgz", - "integrity": "sha512-t74oh607jFTvZ1zelX5nVlxrLbk0iREVSgvn5HZhltUj34ANAaFNtORHwmXEHUiPNcZVk252G52hFnFLjLHBqg==" - }, - "fizzy-ui-utils": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/fizzy-ui-utils/-/fizzy-ui-utils-2.0.7.tgz", - "integrity": "sha512-CZXDVXQ1If3/r8s0T+v+qVeMshhfcuq0rqIFgJnrtd+Bu8GmDmqMjntjUePypVtjHXKJ6V4sw9zeyox34n9aCg==", - "requires": { - "desandro-matches-selector": "^2.0.0" - } - }, - "fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "get-size": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/get-size/-/get-size-2.0.3.tgz", - "integrity": "sha512-lXNzT/h/dTjTxRbm9BXb+SGxxzkm97h/PCIKtlN/CBCxxmkkIVV21udumMS93MuVTDX583gqc94v3RjuHmI+2Q==" - }, "get-stream": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true }, - "glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - }, - "has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" - }, "human-signals": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-3.0.1.tgz", - "integrity": "sha512-rQLskxnM/5OCldHo+wNXbpVgDn5A17CUoKX+7Sokwaknlq7CdSnphy0W39GU8dw59XiCXmFXDg4fRuckQRKewQ==", + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-4.3.1.tgz", + "integrity": "sha512-nZXjEF2nbo7lIw3mgYjItAfgQXog3OjJogSbKa2CQIIvSGWcKgeJnQlNXip6NglNzYH45nSRiEVimMvYL8DDqQ==", "dev": true }, "husky": { @@ -1946,26 +946,6 @@ "integrity": "sha512-+dQSyqPh4x1hlO1swXBiNb2HzTDN1I2IGLQx1GrBuiqFJfoMrnZWwVmatvSiO+Iz8fBUnf+lekwNo4c2LlXItg==", "dev": true }, - "indent-string": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", - "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", - "dev": true - }, - "inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, "is-fullwidth-code-point": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-4.0.0.tgz", @@ -1990,219 +970,55 @@ "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, - "jquery": { - "version": "3.6.3", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.3.tgz", - "integrity": "sha512-bZ5Sy3YzKo9Fyc8wH2iIQK4JImJ6R0GWI9kL1/k7Z91ZBNgkRXE6U0JfHIizZbort8ZunhSI3jw9I6253ahKfg==" - }, - "jquery-mask-plugin": { - "version": "1.14.16", - "resolved": "https://registry.npmjs.org/jquery-mask-plugin/-/jquery-mask-plugin-1.14.16.tgz", - "integrity": "sha512-reywdHlYEkPbzWjTpcc1fk9XQ3PLvO5dzEAVqy8zI7NTF22tB1HbeU3iboZTLdkBEPaWAqeI2HtEjsGQ4roZKw==" - }, "lilconfig": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.6.tgz", - "integrity": "sha512-9JROoBW7pobfsx+Sq2JsASvCo6Pfo6WWoUW79HuB1BCoBXD4PLWJPqDF6fNj67pqBYTbAHkE57M1kS/+L1neOg==", + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true }, "lint-staged": { - "version": "13.1.1", - "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.1.1.tgz", - "integrity": "sha512-LLJLO0Kdbcv2a+CvSF4p1M7jBZOajKSMpBUvyR8+bXccsqPER0/NxTFQSpNHjqwV9kM3tkHczYerTB5wI+bksQ==", + "version": "13.3.0", + "resolved": "https://registry.npmjs.org/lint-staged/-/lint-staged-13.3.0.tgz", + "integrity": "sha512-mPRtrYnipYYv1FEE134ufbWpeggNTo+O/UPzngoaKzbzHAthvR55am+8GfHTnqNRQVRRrYQLGW9ZyUoD7DsBHQ==", "dev": true, "requires": { - "cli-truncate": "^3.1.0", - "colorette": "^2.0.19", - "commander": "^9.4.1", - "debug": "^4.3.4", - "execa": "^6.1.0", - "lilconfig": "2.0.6", - "listr2": "^5.0.5", - "micromatch": "^4.0.5", - "normalize-path": "^3.0.0", - "object-inspect": "^1.12.2", - "pidtree": "^0.6.0", - "string-argv": "^0.3.1", - "yaml": "^2.1.3" + "chalk": "5.3.0", + "commander": "11.0.0", + "debug": "4.3.4", + "execa": "7.2.0", + "lilconfig": "2.1.0", + "listr2": "6.6.1", + "micromatch": "4.0.5", + "pidtree": "0.6.0", + "string-argv": "0.3.2", + "yaml": "2.3.1" } }, "listr2": { - "version": "5.0.7", - "resolved": "https://registry.npmjs.org/listr2/-/listr2-5.0.7.tgz", - "integrity": "sha512-MD+qXHPmtivrHIDRwPYdfNkrzqDiuaKU/rfBcec3WMyMF3xylQj3jMq344OtvQxz7zaCFViRAeqlr2AFhPvXHw==", + "version": "6.6.1", + "resolved": "https://registry.npmjs.org/listr2/-/listr2-6.6.1.tgz", + "integrity": "sha512-+rAXGHh0fkEWdXBmX+L6mmfmXmXvDGEKzkjxO+8mP3+nI/r/CWznVBvsibXdxda9Zz0OW2e2ikphN3OwCT/jSg==", "dev": true, "requires": { - "cli-truncate": "^2.1.0", - "colorette": "^2.0.19", - "log-update": "^4.0.0", - "p-map": "^4.0.0", + "cli-truncate": "^3.1.0", + "colorette": "^2.0.20", + "eventemitter3": "^5.0.1", + "log-update": "^5.0.1", "rfdc": "^1.3.0", - "rxjs": "^7.8.0", - "through": "^2.3.8", - "wrap-ansi": "^7.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "cli-truncate": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/cli-truncate/-/cli-truncate-2.1.0.tgz", - "integrity": "sha512-n8fOixwDD6b/ObinzTrp1ZKFzbgvKZvuz/TvejnLn1aQfC6r52XEx85FmuC+3HI+JM7coBRXUvNqEU2PHVrHpg==", - "dev": true, - "requires": { - "slice-ansi": "^3.0.0", - "string-width": "^4.2.0" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "slice-ansi": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-3.0.0.tgz", - "integrity": "sha512-pSyv7bSTC7ig9Dcgbw9AuRNUb5k5V6oDudjZoMBSr13qpLBG7tB+zgCkARjq7xIUgdz5P1Qe8u+rSGdouOOIyQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "wrap-ansi": "^8.1.0" } }, "log-update": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/log-update/-/log-update-4.0.0.tgz", - "integrity": "sha512-9fkkDevMefjg0mmzWFBW8YkFP91OrizzkW3diF7CpG+S2EYdy4+TVfGwz1zeF8x7hCx1ovSPTOE9Ngib74qqUg==", + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/log-update/-/log-update-5.0.1.tgz", + "integrity": "sha512-5UtUDQ/6edw4ofyljDNcOVJQ4c7OjDro4h3y8e1GQL5iYElYclVHJ3zeWchylvMaKnDbDilC8irOVyexnA/Slw==", "dev": true, "requires": { - "ansi-escapes": "^4.3.0", - "cli-cursor": "^3.1.0", - "slice-ansi": "^4.0.0", - "wrap-ansi": "^6.2.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "slice-ansi": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-4.0.0.tgz", - "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "astral-regex": "^2.0.0", - "is-fullwidth-code-point": "^3.0.0" - } - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - }, - "wrap-ansi": { - "version": "6.2.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", - "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", - "dev": true, - "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - } - } - } - }, - "masonry-layout": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/masonry-layout/-/masonry-layout-4.2.2.tgz", - "integrity": "sha512-iGtAlrpHNyxaR19CvKC3npnEcAwszXoyJiI8ARV2ePi7fmYhIud25MHK8Zx4P0LCC4d3TNO9+rFa1KoK1OEOaA==", - "requires": { - "get-size": "^2.0.2", - "outlayer": "^2.1.0" + "ansi-escapes": "^5.0.0", + "cli-cursor": "^4.0.0", + "slice-ansi": "^5.0.0", + "strip-ansi": "^7.0.1", + "wrap-ansi": "^8.0.1" } }, "merge-stream": { @@ -2227,31 +1043,12 @@ "integrity": "sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==", "dev": true }, - "minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "requires": { - "brace-expansion": "^1.1.7" - } - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", "dev": true }, - "nanoid": { - "version": "3.3.4", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.4.tgz", - "integrity": "sha512-MqBkQh/OHTS2egovRtLk45wEyNXwF+cokD+1YPf9u5VfJiRdAiRwB2froX5Co9Rh20xs4siNPm8naNotSD6RBw==" - }, - "normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true - }, "npm-run-path": { "version": "5.1.0", "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-5.1.0.tgz", @@ -2269,20 +1066,6 @@ } } }, - "object-inspect": { - "version": "1.12.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.3.tgz", - "integrity": "sha512-geUvdk7c+eizMNUDkRpW1wJwgfOiOeHbxBR/hLXK1aT6zmVSO0jsQcs7fj6MGw89jC/cjGfLcNOrtMYtGqm81g==", - "dev": true - }, - "once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { - "wrappy": "1" - } - }, "onetime": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/onetime/-/onetime-6.0.0.tgz", @@ -2292,41 +1075,12 @@ "mimic-fn": "^4.0.0" } }, - "outlayer": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/outlayer/-/outlayer-2.1.1.tgz", - "integrity": "sha512-+GplXsCQ3VrbGujAeHEzP9SXsBmJxzn/YdDSQZL0xqBmAWBmortu2Y9Gwdp9J0bgDQ8/YNIPMoBM13nTwZfAhw==", - "requires": { - "ev-emitter": "^1.0.0", - "fizzy-ui-utils": "^2.0.0", - "get-size": "^2.0.2" - } - }, - "p-map": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", - "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", - "dev": true, - "requires": { - "aggregate-error": "^3.0.0" - } - }, - "path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" - }, "path-key": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "dev": true }, - "picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, "picomatch": { "version": "2.3.1", "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", @@ -2339,50 +1093,10 @@ "integrity": "sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==", "dev": true }, - "postcss": { - "version": "8.4.21", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.21.tgz", - "integrity": "sha512-tP7u/Sn/dVxK2NnruI4H9BG+x+Wxz6oeZ1cJ8P6G/PZY0IKk4k/63TDsQf2kQq3+qoJeLm2kIBUNlZe3zgb4Zg==", - "requires": { - "nanoid": "^3.3.4", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" - } - }, - "postcss-purgecss": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/postcss-purgecss/-/postcss-purgecss-2.0.3.tgz", - "integrity": "sha512-cuQin5PgZzvDe7EjW4S27iM6p4ZNz4iBEPmBrAykXm2WyaBtri1sA4ZVn/zECN7x3uxeADwDq1u4VDY5C9iusg==", - "requires": { - "postcss": "7.0.26", - "purgecss": "^2.0.3" - }, - "dependencies": { - "postcss": { - "version": "7.0.26", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.26.tgz", - "integrity": "sha512-IY4oRjpXWYshuTDFxMVkJDtWIk2LhsTlu8bZnbEJA4+bYT16Lvpo8Qv6EvDumhYRgzjZl489pmsY3qVgJQ08nA==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - } - } - }, - "postcss-selector-parser": { - "version": "6.0.11", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.11.tgz", - "integrity": "sha512-zbARubNdogI9j7WY4nQJBiNqQf3sLS3wCP4WfOidu+p28LofJqDH1tcXypGrcmMHhDk2t9wGhCsYe/+szLTy1g==", - "requires": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - } - }, "prettier": { - "version": "2.8.4", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.4.tgz", - "integrity": "sha512-vIS4Rlc2FNh0BySk3Wkd6xmwxB0FpOndW5fisM5H8hsZSxU2VWVB5CWIkIjWvrHjIhxk2g3bfMKM87zNTrZddw==", + "version": "2.8.8", + "resolved": "https://registry.npmjs.org/prettier/-/prettier-2.8.8.tgz", + "integrity": "sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==", "dev": true }, "prettier-plugin-go-template": { @@ -2395,61 +1109,26 @@ } }, "prettier-plugin-toml": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-0.3.1.tgz", - "integrity": "sha512-j47DEO/dN/acU1nSL/B7q4A4Z2SYJhpWPCLPkcmfAXIQC6A5GD6Ao/bi9HRHZ8ueIDOauqjuAQbnvRxLXMjazA==", + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/prettier-plugin-toml/-/prettier-plugin-toml-0.3.5.tgz", + "integrity": "sha512-yP8dTVjFn1m1RfMAQ2jSjxi41+prv7YSeCwD5k7BCazFDYl+bj1vrEJm8OJTrDa/U20pQsXjYLoVYlHEqEja3Q==", "dev": true, "requires": { - "@toml-tools/parser": "^0.3.1", - "prettier": "^1.16.0" - }, - "dependencies": { - "prettier": { - "version": "1.19.1", - "resolved": "https://registry.npmjs.org/prettier/-/prettier-1.19.1.tgz", - "integrity": "sha512-s7PoyDv/II1ObgQunCbB9PdLmUcBZcnWOcxDh7O0N/UwDEsHyqkW+Qh28jW+mVuCdx7gLB0BotYI1Y6uI9iyew==", - "dev": true - } - } - }, - "purgecss": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/purgecss/-/purgecss-2.3.0.tgz", - "integrity": "sha512-BE5CROfVGsx2XIhxGuZAT7rTH9lLeQx/6M0P7DTXQH4IUc3BBzs9JUzt4yzGf3JrH9enkeq6YJBe9CTtkm1WmQ==", - "requires": { - "commander": "^5.0.0", - "glob": "^7.0.0", - "postcss": "7.0.32", - "postcss-selector-parser": "^6.0.2" - }, - "dependencies": { - "commander": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-5.1.0.tgz", - "integrity": "sha512-P0CysNDQ7rtVw4QIQtm+MRxV66vKFSvlsQvGYXZWR3qFU0jlMKHZZZgw8e+8DSah4UDKMqnknRDQz+xuQXQ/Zg==" - }, - "postcss": { - "version": "7.0.32", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-7.0.32.tgz", - "integrity": "sha512-03eXong5NLnNCD05xscnGKGDZ98CyzoqPSMjOe6SuoQY7Z2hIj0Ld1g/O/UQRuOle2aRtiIRDg9tDcTGAkLfKw==", - "requires": { - "chalk": "^2.4.2", - "source-map": "^0.6.1", - "supports-color": "^6.1.0" - } - } + "@toml-tools/lexer": "^0.3.5", + "@toml-tools/parser": "^0.3.5", + "prettier": "^1.16.0 || ^2.0.0" } }, "regexp-to-ast": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.3.5.tgz", - "integrity": "sha512-1CJygtdvsfNFwiyjaMLBWtg2tfEqx/jSZ8S6TV+GlNL8kiH8rb4cm5Pb7A/C2BpyM/fA8ZJEudlCwi/jvAY+Ow==", + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/regexp-to-ast/-/regexp-to-ast-0.4.0.tgz", + "integrity": "sha512-4qf/7IsIKfSNHQXSwial1IFmfM1Cc/whNBQqRwe0V2stPe7KmN1U0tWQiIx6JiirgSrisjE0eECdNf7Tav1Ntw==", "dev": true }, "restore-cursor": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", - "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-4.0.0.tgz", + "integrity": "sha512-I9fPXU9geO9bHOt9pHHOhOkYerIMsmVaWB0rA2AI9ERh/+x/i7MV5HKBNrg+ljO5eoPVgCcnFuRjJ9uH6I/3eg==", "dev": true, "requires": { "onetime": "^5.1.0", @@ -2479,15 +1158,6 @@ "integrity": "sha512-V2hovdzFbOi77/WajaSMXk2OLm+xNIeQdMMuB7icj7bk6zi2F8GGAxigcnDFpJHbNyNcgyJDiP+8nOrY5cZGrA==", "dev": true }, - "rxjs": { - "version": "7.8.0", - "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.0.tgz", - "integrity": "sha512-F2+gxDshqmIub1KdvZkaEfGDwLNpPvk9Fs6LD/MyQxNgMds/WH9OdDDXOmxUZpME+iSK3rQCctkL0DYyytUqMg==", - "dev": true, - "requires": { - "tslib": "^2.1.0" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -2519,20 +1189,10 @@ "is-fullwidth-code-point": "^4.0.0" } }, - "source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==" - }, - "source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" - }, "string-argv": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.1.tgz", - "integrity": "sha512-a1uQGz7IyVy9YwhqjZIZu1c8JO8dNIe20xBmSS6qu9kv++k3JGzCVmprbNN5Kn+BgzD5E7YYwg1CcjuJMRNsvg==", + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/string-argv/-/string-argv-0.3.2.tgz", + "integrity": "sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==", "dev": true }, "string-width": { @@ -2547,9 +1207,9 @@ } }, "strip-ansi": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.0.1.tgz", - "integrity": "sha512-cXNxvT8dFNRVfhVME3JAe98mkXDYN2O1l7jmcwMnOslDeESg1rF/OZMtK0nRAhiari1unG5cD4jG3rapUAkLbw==", + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "requires": { "ansi-regex": "^6.0.1" @@ -2561,20 +1221,6 @@ "integrity": "sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==", "dev": true }, - "supports-color": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-6.1.0.tgz", - "integrity": "sha512-qe1jfm1Mg7Nq/NSh6XE24gPXROEVsWHxC1LIx//XNlD9iw7YZQGjZNjYN7xGaEG6iKdA8EtNFW6R0gjnVXp+wQ==", - "requires": { - "has-flag": "^3.0.0" - } - }, - "through": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", - "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==", - "dev": true - }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -2584,16 +1230,10 @@ "is-number": "^7.0.0" } }, - "tslib": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.5.0.tgz", - "integrity": "sha512-336iVw3rtn2BUK7ORdIAHTyxHGRIHVReokCR3XjbckJMK7ms8FysBfhLR8IXnAgy7T0PTPNBWKiH514FOW/WSg==", - "dev": true - }, "type-fest": { - "version": "0.21.3", - "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", - "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-1.4.0.tgz", + "integrity": "sha512-yGSza74xk0UG8k+pLh5oeoYirvIiWo5t0/o3zHHAO2tRDiZcxWP7fywNlXhqb6/r6sWvwi+RsyQMWhVLe4BVuA==", "dev": true }, "ulid": { @@ -2602,11 +1242,6 @@ "integrity": "sha512-keqHubrlpvT6G2wH0OEfSW4mquYRcbe/J8NMmveoQOjUqmo+hXtO+ORCpWhdbZ7k72UtY61BL7haGxW6enBnjw==", "dev": true }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" - }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -2617,74 +1252,20 @@ } }, "wrap-ansi": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", - "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "version": "8.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", + "integrity": "sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==", "dev": true, "requires": { - "ansi-styles": "^4.0.0", - "string-width": "^4.1.0", - "strip-ansi": "^6.0.0" - }, - "dependencies": { - "ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", - "dev": true - }, - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", - "dev": true - }, - "string-width": { - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", - "dev": true, - "requires": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - } - }, - "strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", - "dev": true, - "requires": { - "ansi-regex": "^5.0.1" - } - } + "ansi-styles": "^6.1.0", + "string-width": "^5.0.1", + "strip-ansi": "^7.0.1" } }, - "wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, "yaml": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.2.2.tgz", - "integrity": "sha512-CBKFWExMn46Foo4cldiChEzn7S7SRV+wqiluAb6xmueD/fGyRHIhX8m14vVGgeFWjN540nKCNVj6P21eQjgTuA==", + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.1.tgz", + "integrity": "sha512-2eHWfjaoXgTBC2jNM1LRef62VQa0umtvRiDSk6HSzW7RvS5YtkabJrwYLLEKWBc8a5U2PTSCs+dJjUTJdlHsWQ==", "dev": true } } diff --git a/package.json b/package.json index 67e1f54..2145ab4 100644 --- a/package.json +++ b/package.json @@ -12,20 +12,6 @@ "url": "https://github.com/MillironX/millironx.github.io/issues" }, "homepage": "https://github.com/MillironX/millironx.github.io#readme", - "dependencies": { - "@fortawesome/fontawesome-svg-core": "^6.2.1", - "@fortawesome/free-brands-svg-icons": "^6.2.1", - "@openfonts/nunito-sans_all": "^1.44.2", - "@popperjs/core": "^2.11.4", - "bootstrap": "^5.1.3", - "bootswatch": "^5.2.2", - "fittext.js": "^1.2.0", - "jquery": "^3.6.0", - "jquery-mask-plugin": "^1.14.16", - "masonry-layout": "^4.2.2", - "postcss": "^8.4.12", - "postcss-purgecss": "^2.0.3" - }, "devDependencies": { "husky": "^8.0.1", "lint-staged": "^13.0.3", diff --git a/postcss.config.js b/postcss.config.js deleted file mode 100644 index c9eba21..0000000 --- a/postcss.config.js +++ /dev/null @@ -1,13 +0,0 @@ -const purgecss = require("postcss-purgecss")({ - content: ["./hugo_stats.json"], - defaultExtractor: (content) => { - let els = JSON.parse(content).htmlElements; - return els.tags.concat(els.classes, els.ids); - }, -}); - -if (process.env.HUGO_ENVIRONMENT === "production") { - module.exports = { - plugins: [purgecss], - }; -} diff --git a/static/anatomy-quiz.html b/static/anatomy-quiz.html index 995c3ab..c996594 100644 --- a/static/anatomy-quiz.html +++ b/static/anatomy-quiz.html @@ -1,6 +1,8 @@

MillironX's Anatomy Quiz Generator

+

Your device width:

+

Your device height:

Quiz material weighting


@@ -14,6 +16,19 @@

Quiz

    + +