First commit
This commit is contained in:
32
.gitignore
vendored
Normal file
32
.gitignore
vendored
Normal file
@@ -0,0 +1,32 @@
|
||||
# node
|
||||
node_modules/
|
||||
npm-debug.log*
|
||||
yarn*.log*
|
||||
pnpm-debug.log*
|
||||
|
||||
# builds / caches / coverage
|
||||
dist/
|
||||
build/
|
||||
.cache/
|
||||
.tmp/
|
||||
coverage/
|
||||
|
||||
# env / local config
|
||||
.env
|
||||
.env.*
|
||||
.DS_Store
|
||||
Thumbs.db
|
||||
.idea/
|
||||
.vscode/
|
||||
*.swp
|
||||
|
||||
# Jekyll
|
||||
_site
|
||||
.sass-cache
|
||||
.jekyll-cache
|
||||
.jekyll-metadata
|
||||
vendor
|
||||
.bundle/
|
||||
|
||||
# Misc
|
||||
*.log
|
||||
1
.husky/pre-commit
Normal file
1
.husky/pre-commit
Normal file
@@ -0,0 +1 @@
|
||||
pnpm exec lint-staged
|
||||
27
.prettierrc
Normal file
27
.prettierrc
Normal file
@@ -0,0 +1,27 @@
|
||||
{
|
||||
"tabWidth": 2,
|
||||
"useTabs": false,
|
||||
"singleQuote": true,
|
||||
"printWidth": 100,
|
||||
"plugins": ["@shopify/prettier-plugin-liquid", "prettier-plugin-nginx"],
|
||||
"overrides": [
|
||||
{
|
||||
"files": "*.html",
|
||||
"options": {
|
||||
"parser": "liquid-html"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": "*.md",
|
||||
"options": {
|
||||
"parser": "markdown"
|
||||
}
|
||||
},
|
||||
{
|
||||
"files": ["nginx.conf", "*.conf"],
|
||||
"options": {
|
||||
"parser": "nginx"
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
24
404.html
Normal file
24
404.html
Normal file
@@ -0,0 +1,24 @@
|
||||
---
|
||||
permalink: /404.html
|
||||
layout: page
|
||||
---
|
||||
<style type='text/css' media='screen'>
|
||||
.container {
|
||||
margin: 10px auto;
|
||||
max-width: 600px;
|
||||
text-align: center;
|
||||
}
|
||||
h1 {
|
||||
margin: 30px 0;
|
||||
font-size: 4em;
|
||||
line-height: 1;
|
||||
letter-spacing: -1px;
|
||||
}
|
||||
</style>
|
||||
|
||||
<div class='container'>
|
||||
<h1>404</h1>
|
||||
|
||||
<p><strong>Page not found :(</strong></p>
|
||||
<p>The requested page could not be found.</p>
|
||||
</div>
|
||||
22
Gemfile
Normal file
22
Gemfile
Normal file
@@ -0,0 +1,22 @@
|
||||
source "https://rubygems.org"
|
||||
gem "jekyll", "~> 4.4.1"
|
||||
gem "minima", "~> 2.5"
|
||||
|
||||
group :jekyll_plugins do
|
||||
gem "jekyll-feed", "~> 0.12"
|
||||
gem 'jekyll-archives'
|
||||
end
|
||||
|
||||
# Windows and JRuby does not include zoneinfo files, so bundle the tzinfo-data gem
|
||||
# and associated library.
|
||||
platforms :mingw, :x64_mingw, :mswin, :jruby do
|
||||
gem "tzinfo", ">= 1", "< 3"
|
||||
gem "tzinfo-data"
|
||||
end
|
||||
|
||||
# performance-booster for watching directories on Windows
|
||||
gem "wdm", "~> 0.1", :platforms => [:mingw, :x64_mingw, :mswin]
|
||||
|
||||
# Lock `http_parser.rb` gem to `v0.6.x` on JRuby builds since newer versions of the gem
|
||||
# do not have a Java counterpart.
|
||||
gem "http_parser.rb", "~> 0.6.0", :platforms => [:jruby]
|
||||
178
Gemfile.lock
Normal file
178
Gemfile.lock
Normal file
@@ -0,0 +1,178 @@
|
||||
GEM
|
||||
remote: https://rubygems.org/
|
||||
specs:
|
||||
addressable (2.8.7)
|
||||
public_suffix (>= 2.0.2, < 7.0)
|
||||
base64 (0.3.0)
|
||||
bigdecimal (3.3.1)
|
||||
colorator (1.1.0)
|
||||
concurrent-ruby (1.3.5)
|
||||
csv (3.3.5)
|
||||
em-websocket (0.5.3)
|
||||
eventmachine (>= 0.12.9)
|
||||
http_parser.rb (~> 0)
|
||||
eventmachine (1.2.7)
|
||||
ffi (1.17.2)
|
||||
ffi (1.17.2-aarch64-linux-gnu)
|
||||
ffi (1.17.2-aarch64-linux-musl)
|
||||
ffi (1.17.2-arm-linux-gnu)
|
||||
ffi (1.17.2-arm-linux-musl)
|
||||
ffi (1.17.2-arm64-darwin)
|
||||
ffi (1.17.2-x86-linux-gnu)
|
||||
ffi (1.17.2-x86-linux-musl)
|
||||
ffi (1.17.2-x86_64-darwin)
|
||||
ffi (1.17.2-x86_64-linux-gnu)
|
||||
ffi (1.17.2-x86_64-linux-musl)
|
||||
forwardable-extended (2.6.0)
|
||||
google-protobuf (4.33.0)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-aarch64-linux-gnu)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-aarch64-linux-musl)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-arm64-darwin)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-x86-linux-gnu)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-x86-linux-musl)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-x86_64-darwin)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-x86_64-linux-gnu)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
google-protobuf (4.33.0-x86_64-linux-musl)
|
||||
bigdecimal
|
||||
rake (>= 13)
|
||||
http_parser.rb (0.8.0)
|
||||
i18n (1.14.7)
|
||||
concurrent-ruby (~> 1.0)
|
||||
jekyll (4.4.1)
|
||||
addressable (~> 2.4)
|
||||
base64 (~> 0.2)
|
||||
colorator (~> 1.0)
|
||||
csv (~> 3.0)
|
||||
em-websocket (~> 0.5)
|
||||
i18n (~> 1.0)
|
||||
jekyll-sass-converter (>= 2.0, < 4.0)
|
||||
jekyll-watch (~> 2.0)
|
||||
json (~> 2.6)
|
||||
kramdown (~> 2.3, >= 2.3.1)
|
||||
kramdown-parser-gfm (~> 1.0)
|
||||
liquid (~> 4.0)
|
||||
mercenary (~> 0.3, >= 0.3.6)
|
||||
pathutil (~> 0.9)
|
||||
rouge (>= 3.0, < 5.0)
|
||||
safe_yaml (~> 1.0)
|
||||
terminal-table (>= 1.8, < 4.0)
|
||||
webrick (~> 1.7)
|
||||
jekyll-archives (2.3.0)
|
||||
jekyll (>= 3.6, < 5.0)
|
||||
jekyll-feed (0.17.0)
|
||||
jekyll (>= 3.7, < 5.0)
|
||||
jekyll-sass-converter (3.1.0)
|
||||
sass-embedded (~> 1.75)
|
||||
jekyll-seo-tag (2.8.0)
|
||||
jekyll (>= 3.8, < 5.0)
|
||||
jekyll-watch (2.2.1)
|
||||
listen (~> 3.0)
|
||||
json (2.15.1)
|
||||
kramdown (2.5.1)
|
||||
rexml (>= 3.3.9)
|
||||
kramdown-parser-gfm (1.1.0)
|
||||
kramdown (~> 2.0)
|
||||
liquid (4.0.4)
|
||||
listen (3.9.0)
|
||||
rb-fsevent (~> 0.10, >= 0.10.3)
|
||||
rb-inotify (~> 0.9, >= 0.9.10)
|
||||
mercenary (0.4.0)
|
||||
minima (2.5.2)
|
||||
jekyll (>= 3.5, < 5.0)
|
||||
jekyll-feed (~> 0.9)
|
||||
jekyll-seo-tag (~> 2.1)
|
||||
pathutil (0.16.2)
|
||||
forwardable-extended (~> 2.6)
|
||||
public_suffix (6.0.2)
|
||||
rake (13.3.0)
|
||||
rb-fsevent (0.11.2)
|
||||
rb-inotify (0.11.1)
|
||||
ffi (~> 1.0)
|
||||
rexml (3.4.4)
|
||||
rouge (4.6.1)
|
||||
safe_yaml (1.0.5)
|
||||
sass-embedded (1.93.2)
|
||||
google-protobuf (~> 4.31)
|
||||
rake (>= 13)
|
||||
sass-embedded (1.93.2-aarch64-linux-android)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-aarch64-linux-gnu)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-aarch64-linux-musl)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-arm-linux-androideabi)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-arm-linux-gnueabihf)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-arm-linux-musleabihf)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-arm64-darwin)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-riscv64-linux-android)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-riscv64-linux-gnu)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-riscv64-linux-musl)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-x86_64-darwin)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-x86_64-linux-android)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-x86_64-linux-gnu)
|
||||
google-protobuf (~> 4.31)
|
||||
sass-embedded (1.93.2-x86_64-linux-musl)
|
||||
google-protobuf (~> 4.31)
|
||||
terminal-table (3.0.2)
|
||||
unicode-display_width (>= 1.1.1, < 3)
|
||||
unicode-display_width (2.6.0)
|
||||
webrick (1.9.1)
|
||||
|
||||
PLATFORMS
|
||||
aarch64-linux-android
|
||||
aarch64-linux-gnu
|
||||
aarch64-linux-musl
|
||||
arm-linux-androideabi
|
||||
arm-linux-gnu
|
||||
arm-linux-gnueabihf
|
||||
arm-linux-musl
|
||||
arm-linux-musleabihf
|
||||
arm64-darwin
|
||||
riscv64-linux-android
|
||||
riscv64-linux-gnu
|
||||
riscv64-linux-musl
|
||||
ruby
|
||||
x86-linux-gnu
|
||||
x86-linux-musl
|
||||
x86_64-darwin
|
||||
x86_64-linux-android
|
||||
x86_64-linux-gnu
|
||||
x86_64-linux-musl
|
||||
|
||||
DEPENDENCIES
|
||||
http_parser.rb (~> 0.6.0)
|
||||
jekyll (~> 4.4.1)
|
||||
jekyll-archives
|
||||
jekyll-feed (~> 0.12)
|
||||
minima (~> 2.5)
|
||||
tzinfo (>= 1, < 3)
|
||||
tzinfo-data
|
||||
wdm (~> 0.1)
|
||||
|
||||
BUNDLED WITH
|
||||
2.7.2
|
||||
31
README.md
Normal file
31
README.md
Normal file
@@ -0,0 +1,31 @@
|
||||
# Severed blog (Jekyll app)
|
||||
|
||||
## Development
|
||||
|
||||
**Install Dependencies (Ruby & Node):**
|
||||
|
||||
```bash
|
||||
bundle install && pnpm install
|
||||
```
|
||||
|
||||
**Start Local Server:**
|
||||
|
||||
```bash
|
||||
pnpm dev
|
||||
```
|
||||
|
||||
**Build for Production:**
|
||||
|
||||
```bash
|
||||
pnpm build
|
||||
```
|
||||
|
||||
## Code Quality
|
||||
|
||||
**Format Code Manually:**
|
||||
|
||||
```bash
|
||||
pnpm format
|
||||
```
|
||||
|
||||
_(Formatting also runs automatically on commit via Husky)_
|
||||
66
_config.yml
Normal file
66
_config.yml
Normal file
@@ -0,0 +1,66 @@
|
||||
# Site settings
|
||||
title: Severed
|
||||
email: wboughattas@proton.me
|
||||
description: >-
|
||||
Architectural revisions and engineering logs from the Severed platform.
|
||||
Transitioning from managed cloud to self-hosted OSS infrastructure.
|
||||
|
||||
# Deployment
|
||||
baseurl: ''
|
||||
url: 'https://blog.severed.ink'
|
||||
#twitter_username: jekyllrb
|
||||
github_username: Severed
|
||||
|
||||
# Shorter URLs
|
||||
permalink: /:categories/:title/
|
||||
|
||||
# Theme settings
|
||||
theme: minima
|
||||
minima:
|
||||
skin: dark
|
||||
|
||||
plugins:
|
||||
- jekyll-feed
|
||||
- jekyll-archives
|
||||
|
||||
# Exclude from processing.
|
||||
# The following items will not be processed, by default.
|
||||
# Any item listed under the `exclude:` key here will be automatically added to
|
||||
# the internal "default list".
|
||||
#
|
||||
# Excluded items can be processed by explicitly listing the directories or
|
||||
# their entries' file path in the `include:` list.
|
||||
#
|
||||
exclude:
|
||||
- .sass-cache/
|
||||
- .jekyll-cache/
|
||||
- gemfiles/
|
||||
- Gemfile
|
||||
- Gemfile.lock
|
||||
- node_modules/
|
||||
- vendor/bundle/
|
||||
- vendor/cache/
|
||||
- vendor/gems/
|
||||
- vendor/ruby/
|
||||
|
||||
# custom fields
|
||||
#
|
||||
module_order:
|
||||
- releases
|
||||
- architectures
|
||||
|
||||
jekyll-archives:
|
||||
enabled:
|
||||
- categories
|
||||
layout: category_index
|
||||
permalinks:
|
||||
category: '/:name/'
|
||||
|
||||
sass:
|
||||
style: compressed
|
||||
quiet_deps: true
|
||||
silence_deprecations:
|
||||
- import
|
||||
- color-functions
|
||||
- global-builtin
|
||||
- mixed-decls
|
||||
30
_includes/directory_tree.html
Normal file
30
_includes/directory_tree.html
Normal file
@@ -0,0 +1,30 @@
|
||||
<div class='architecture-tree'>
|
||||
<h3 class='post-list-heading'>System Architectures</h3>
|
||||
|
||||
<details open style='margin-bottom: 20px;'>
|
||||
<summary style='cursor: pointer; list-style: none; font-family: monospace; font-size: 1.1em; outline: none;'>
|
||||
<svg
|
||||
style='width: 16px; height: 16px; vertical-align: middle; margin-right: 5px;'
|
||||
viewBox='0 0 24 24'
|
||||
fill='none'
|
||||
stroke='currentColor'
|
||||
stroke-width='2'
|
||||
stroke-linecap='round'
|
||||
stroke-linejoin='round'
|
||||
>
|
||||
<path d="M22 19a2 2 0 0 1-2 2H4a2 2 0 0 1-2-2V5a2 2 0 0 1 2-2h5l2 3h9a2 2 0 0 1 2 2z"></path>
|
||||
</svg>
|
||||
<strong>Architectures/</strong>
|
||||
</summary>
|
||||
|
||||
<ul style='list-style: none; padding-left: 12px; margin-top: 10px;'>
|
||||
{% for doc in site.architectures %}
|
||||
<li style='margin-bottom: 5px;'>
|
||||
<a href='{{ doc.url | relative_url }}' style='text-decoration: none; color: #2a7ae2;'>
|
||||
{{ doc.title | default: doc.name }}
|
||||
</a>
|
||||
</li>
|
||||
{% endfor %}
|
||||
</ul>
|
||||
</details>
|
||||
</div>
|
||||
99
_includes/folder_tree.html
Normal file
99
_includes/folder_tree.html
Normal file
@@ -0,0 +1,99 @@
|
||||
<div
|
||||
class='tree-card'
|
||||
style='margin-bottom: 16px; border: 1px solid #e1e4e8; border-radius: 6px; overflow: hidden; box-shadow: 0 1px 2px rgba(0,0,0,0.03);'
|
||||
>
|
||||
<details style='background: #ffffff;'>
|
||||
<summary
|
||||
style='cursor: pointer; padding: 10px 16px; background: #f6f8fa; border-bottom: 1px solid transparent; outline: none; list-style: none; display: flex; align-items: center; transition: background 0.2s ease;'
|
||||
>
|
||||
<svg
|
||||
class='chevron'
|
||||
width='16'
|
||||
height='16'
|
||||
viewBox='0 0 24 24'
|
||||
fill='none'
|
||||
stroke='#586069'
|
||||
stroke-width='2'
|
||||
stroke-linecap='round'
|
||||
stroke-linejoin='round'
|
||||
style='margin-right: 8px;'
|
||||
>
|
||||
<polyline points="9 18 15 12 9 6"></polyline>
|
||||
</svg>
|
||||
<span style="font-family: 'SFMono-Regular', Consolas, 'Liberation Mono', Menlo, monospace; font-size: 13px; font-weight: 600; color: #24292e;">
|
||||
_{{ include.name }}
|
||||
</span>
|
||||
</summary>
|
||||
|
||||
<div style='padding: 8px 0; border-top: 1px solid #e1e4e8;'>
|
||||
{% for post in include.posts %}
|
||||
<a
|
||||
href='{{ post.url | relative_url }}'
|
||||
class='tree-item'
|
||||
style="display: flex; align-items: center; justify-content: space-between; padding: 6px 16px 6px 36px; text-decoration: none; color: #586069; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 14px; transition: all 0.2s ease;"
|
||||
>
|
||||
<div style='display: flex; align-items: center; overflow: hidden; text-overflow: ellipsis; white-space: nowrap;'>
|
||||
{% if post.highlight == true %}
|
||||
<svg
|
||||
width='12'
|
||||
height='12'
|
||||
viewBox='0 0 24 24'
|
||||
fill='#f1c40f'
|
||||
stroke='#f1c40f'
|
||||
stroke-width='2'
|
||||
stroke-linecap='round'
|
||||
stroke-linejoin='round'
|
||||
style='margin-right: 9px; flex-shrink: 0;'
|
||||
>
|
||||
<polygon
|
||||
points="12 2 15.09 8.26 22 9.27 17 14.14 18.18 21.02 12 17.77 5.82 21.02 7 14.14 2 9.27 8.91 8.26 12 2"></polygon>
|
||||
</svg>
|
||||
{% else %}
|
||||
<span
|
||||
style='width: 6px; height: 6px; border-radius: 50%; background: #e1e4e8; margin-right: 12px; margin-left: 3px; flex-shrink: 0;'
|
||||
></span>
|
||||
{% endif %}
|
||||
|
||||
<span style='white-space: nowrap; overflow: hidden; text-overflow: ellipsis;'>
|
||||
{{- post.title | escape -}}
|
||||
</span>
|
||||
</div>
|
||||
|
||||
<span style='font-size: 12px; color: #959da5; margin-left: 10px; flex-shrink: 0; font-variant-numeric: tabular-nums;'>
|
||||
{{ post.date | date: '%b %d' }}
|
||||
</span>
|
||||
</a>
|
||||
{% endfor %}
|
||||
</div>
|
||||
</details>
|
||||
</div>
|
||||
|
||||
<style>
|
||||
details[open] summary .chevron {
|
||||
transform: rotate(90deg);
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
details:not([open]) summary .chevron {
|
||||
transition: transform 0.2s;
|
||||
}
|
||||
|
||||
details summary:hover {
|
||||
background: #f0f3f6 !important;
|
||||
}
|
||||
|
||||
details[open] summary {
|
||||
border-bottom-color: #e1e4e8 !important;
|
||||
}
|
||||
|
||||
a.tree-item:hover {
|
||||
background-color: #f1f8ff;
|
||||
color: #0366d6 !important;
|
||||
}
|
||||
|
||||
a.tree-item:hover span:first-child {
|
||||
background: #0366d6 !important;
|
||||
}
|
||||
|
||||
/* Color the dot on hover */
|
||||
</style>
|
||||
20
_includes/head.html
Normal file
20
_includes/head.html
Normal file
@@ -0,0 +1,20 @@
|
||||
<head>
|
||||
<meta charset='utf-8'>
|
||||
<meta http-equiv='X-UA-Compatible' content='IE=edge'>
|
||||
<meta name='viewport' content='width=device-width, initial-scale=1'>
|
||||
{%- seo -%}
|
||||
|
||||
<link rel='preconnect' href='https://fonts.googleapis.com'>
|
||||
<link rel='preconnect' href='https://fonts.gstatic.com' crossorigin>
|
||||
<link
|
||||
href='https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Plus+Jakarta+Sans:wght@400;500;600;700&display=swap'
|
||||
rel='stylesheet'
|
||||
>
|
||||
|
||||
<link
|
||||
rel='stylesheet'
|
||||
href='{{ '/assets/main.css' | relative_url }}?v={{ site.time | date: '%s' }}'
|
||||
>
|
||||
|
||||
{%- feed_meta -%}
|
||||
</head>
|
||||
15
_includes/header.html
Normal file
15
_includes/header.html
Normal file
@@ -0,0 +1,15 @@
|
||||
<header class='site-header' role='banner'>
|
||||
<div class='wrapper'>
|
||||
<a class='site-title' rel='author' href='{{ "/" | relative_url }}'>
|
||||
{{ site.title | escape }}
|
||||
</a>
|
||||
|
||||
<nav class='site-nav'>
|
||||
<div class='trigger'>
|
||||
<a class='page-link' href='https://severed.ink' style='font-weight: bold; color: #24292e;'>
|
||||
severed.ink ↗
|
||||
</a>
|
||||
</div>
|
||||
</nav>
|
||||
</div>
|
||||
</header>
|
||||
12
_includes/social.html
Normal file
12
_includes/social.html
Normal file
@@ -0,0 +1,12 @@
|
||||
<ul class='social-media-list'>
|
||||
{%- if site.github_username -%}
|
||||
<li>
|
||||
<a href='https://git.severed.ink/{{ site.github_username | cgi_escape | escape }}'>
|
||||
<svg class='svg-icon'>
|
||||
<use xlink:href="{{ '/assets/minima-social-icons.svg#github' | relative_url }}"></use>
|
||||
</svg>
|
||||
<span class='username'>{{ site.github_username | escape }}</span>
|
||||
</a>
|
||||
</li>
|
||||
{%- endif -%}
|
||||
</ul>
|
||||
33
_layouts/category_index.html
Normal file
33
_layouts/category_index.html
Normal file
@@ -0,0 +1,33 @@
|
||||
---
|
||||
layout: forge
|
||||
---
|
||||
<div style='margin-bottom: 20px;'>
|
||||
<a
|
||||
href='/'
|
||||
style="text-decoration: none; color: #586069; font-family: -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif; font-size: 14px; display: flex; align-items: center; font-weight: 500;"
|
||||
>
|
||||
<svg
|
||||
width='16'
|
||||
height='16'
|
||||
viewBox='0 0 24 24'
|
||||
fill='none'
|
||||
stroke='currentColor'
|
||||
stroke-width='2'
|
||||
stroke-linecap='round'
|
||||
stroke-linejoin='round'
|
||||
style='margin-right: 6px;'
|
||||
>
|
||||
<line x1="19" y1="12" x2="5" y2="12"></line>
|
||||
<polyline points="12 19 5 12 12 5"></polyline>
|
||||
</svg>
|
||||
Back to Forge
|
||||
</a>
|
||||
</div>
|
||||
|
||||
<h1 class='post-list-heading' style='margin-bottom: 30px; text-transform: capitalize;'>
|
||||
{{ page.title }} Module
|
||||
</h1>
|
||||
|
||||
<div class='modules-wrapper'>
|
||||
{% include folder_tree.html name=page.title posts=page.posts %}
|
||||
</div>
|
||||
6
_layouts/forge.html
Normal file
6
_layouts/forge.html
Normal file
@@ -0,0 +1,6 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
<div class='home'>
|
||||
{{ content }}
|
||||
</div>
|
||||
29
_layouts/home.html
Normal file
29
_layouts/home.html
Normal file
@@ -0,0 +1,29 @@
|
||||
---
|
||||
layout: default
|
||||
---
|
||||
<div class='home'>
|
||||
{%- if page.title -%}
|
||||
<h1 class='page-heading'>{{ page.title }}</h1>
|
||||
{%- endif -%}
|
||||
|
||||
{{ content }}
|
||||
|
||||
{%- if site.posts.size > 0 -%}
|
||||
<h2 class='post-list-heading'>{{ page.list_title | default: 'Posts' }}</h2>
|
||||
<ul class='post-list'>
|
||||
{%- for post in site.posts -%}
|
||||
<li>
|
||||
<span class='post-meta'>{{ post.date | date: '%b %-d, %Y' }}</span>
|
||||
<h3>
|
||||
<a class='post-link' href='{{ post.url | relative_url }}'>
|
||||
{{ post.title | escape }}
|
||||
</a>
|
||||
</h3>
|
||||
{%- if site.show_excerpts -%}
|
||||
{{ post.excerpt }}
|
||||
{%- endif -%}
|
||||
</li>
|
||||
{%- endfor -%}
|
||||
</ul>
|
||||
{%- endif -%}
|
||||
</div>
|
||||
17
_posts/architectures/2025-12-27-architecture-0.1.md
Normal file
17
_posts/architectures/2025-12-27-architecture-0.1.md
Normal file
@@ -0,0 +1,17 @@
|
||||
---
|
||||
layout: post
|
||||
title: Architecture V1 (WIP)
|
||||
date: 2025-12-27 02:00:00 -0400
|
||||
categories:
|
||||
- architectures
|
||||
---
|
||||
|
||||
## Monitoring
|
||||
|
||||
```bash
|
||||
.
|
||||
└── alloy
|
||||
├── config
|
||||
│ └── config.alloy
|
||||
└── docker-compose.yml
|
||||
```
|
||||
54
_posts/releases/2025-12-27-release-0.1.md
Normal file
54
_posts/releases/2025-12-27-release-0.1.md
Normal file
@@ -0,0 +1,54 @@
|
||||
---
|
||||
layout: post
|
||||
title: 'Release 0.1: The Severed Ecosystem'
|
||||
date: 2025-12-27 02:00:00 -0400
|
||||
categories:
|
||||
- releases
|
||||
highlight: true
|
||||
---
|
||||
|
||||
This blog serves as the public documentation for **Severed**. While the main site provides the high-level vision,
|
||||
this space is dedicated to the technical source-of-truth for the experiments, infrastructure-as-code, and proprietary
|
||||
tooling that are used within the cluster.
|
||||
|
||||
### Ecosystem
|
||||
|
||||
The following services are currently active within the `severed.ink` network:
|
||||
|
||||
- **[ChronoFlow Quant](https://refinement.severed.ink)**: Proprietary Trading Pipeline `(Auth Required)`
|
||||
- **[Flow Admin](https://refinement.severed.ink)**: Dagster Orchestration Engine `(Auth Required)`
|
||||
- **[Optics](https://optics.severed.ink)**: Centralized Grafana Observability `(Auth Required)`
|
||||
- **[Gitea](https://git.severed.ink)**: Version Control & Git Ops `(Public)`
|
||||
- **[Blog](https://blog.severed.ink)**: Public Engineering Documentation `(Public)`
|
||||
|
||||
### Core Infrastructure
|
||||
|
||||
The ecosystem is powered by a **Home Server Cluster** managed via a **Kubernetes (k3s)** distribution. This setup
|
||||
prioritizes local sovereignty and GitOps principles.
|
||||
|
||||
- **CI Pipeline:** Automated build and test suites are orchestrated by a private Jenkins server utilizing self-hosted
|
||||
runners.
|
||||
- **GitOps & Deployment:** Automated synchronization and state enforcement via **ArgoCD**.
|
||||
- **Data Layer:** Persistent storage managed by **PostgreSQL**.
|
||||
- **Telemetry:** Full-stack observability provided by **Prometheus** (metrics) and **Loki** (logs) via **Grafana**.
|
||||
- **Security Layer:** Push/Pull GitOps operations require an active connection to a **WireGuard (VPN)** for remote
|
||||
access.
|
||||
|
||||
### Roadmap
|
||||
|
||||
Engineering efforts are currently focused on the following milestones:
|
||||
|
||||
1. **OSS Strategy:** Transitioning from a hybrid of AWS managed services toward a ~100% Open Source Software (OSS) stack.
|
||||
2. **High Availability (HA):** Implementing a "Cloud RAID-1" failover mechanism. In the event of home cluster
|
||||
instability, traffic automatically routes to a secondary cloud-instantiated Kubernetes cluster as a temporary
|
||||
failover.
|
||||
3. **Data Resilience:** Automating PostgreSQL backup strategies to ensure parity between the primary cluster and the
|
||||
cloud-based failover.
|
||||
4. **Storage Infrastructure:** Integrating a dedicated **TrueNAS** node to move from local SATA/NVMe reliance to a
|
||||
centralized, redundant storage architecture.
|
||||
|
||||
### Terminal Redirect
|
||||
|
||||
For the full technical portfolio and expertise highlights, visit the main site:
|
||||
|
||||
## [→ severed.ink](https://severed.ink/)
|
||||
37
assets/main.scss
Normal file
37
assets/main.scss
Normal file
@@ -0,0 +1,37 @@
|
||||
---
|
||||
---
|
||||
|
||||
@import 'minima';
|
||||
|
||||
/* Minimal Tweaks for the Tree Component */
|
||||
details > summary {
|
||||
list-style: none; /* Hides default triangle in some browsers */
|
||||
}
|
||||
|
||||
details > summary::-webkit-details-marker {
|
||||
display: none;
|
||||
}
|
||||
|
||||
.site-header {
|
||||
border-top: none; /* Removes the top grey line (your previous request) */
|
||||
|
||||
/* Sticky Logic */
|
||||
position: sticky; /* Stick to the viewport */
|
||||
top: 0; /* Stick exactly at the top */
|
||||
z-index: 1000; /* Ensure it sits above all other content */
|
||||
background-color: #fff; /* White background to hide scrolling content */
|
||||
|
||||
/* Optional: Adds a subtle shadow when scrolling for better separation */
|
||||
box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05);
|
||||
}
|
||||
|
||||
body {
|
||||
caret-color: transparent;
|
||||
}
|
||||
|
||||
/* 2. Restore the cursor for actual input fields so users can type */
|
||||
input,
|
||||
textarea,
|
||||
[contenteditable] {
|
||||
caret-color: auto;
|
||||
}
|
||||
10
docker-compose.yml
Normal file
10
docker-compose.yml
Normal file
@@ -0,0 +1,10 @@
|
||||
services:
|
||||
web:
|
||||
image: nginx:alpine
|
||||
container_name: jekyll_blog
|
||||
ports:
|
||||
- '8080:80'
|
||||
volumes:
|
||||
- ./_site:/usr/share/nginx/html:ro
|
||||
- ./nginx.conf:/etc/nginx/conf.d/default.conf:ro
|
||||
restart: unless-stopped
|
||||
41
index.markdown
Normal file
41
index.markdown
Normal file
@@ -0,0 +1,41 @@
|
||||
---
|
||||
layout: forge
|
||||
---
|
||||
|
||||
<h2 class="post-list-heading">Highlighted articles</h2>
|
||||
|
||||
<ul class="post-list">
|
||||
{% for post in site.posts %}
|
||||
{% if post.highlight == true %}
|
||||
<li>
|
||||
<span class="post-meta">{{ post.date | date: "%b %-d, %Y" }}</span>
|
||||
<h3>
|
||||
<a class="post-link" href="{{ post.url | relative_url }}">
|
||||
{{ post.title | escape }}
|
||||
</a>
|
||||
</h3>
|
||||
</li>
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
</ul>
|
||||
|
||||
<h2 class="post-list-heading" style="margin-top: 40px;">Documentation Modules</h2>
|
||||
|
||||
<div class="modules-wrapper">
|
||||
{% for folder_name in site.module_order %}
|
||||
{% assign cat_posts = site.categories[folder_name] %}
|
||||
{% if cat_posts %}
|
||||
{% include folder_tree.html name=folder_name posts=cat_posts %}
|
||||
{% endif %}
|
||||
{% endfor %}
|
||||
|
||||
{% assign sorted_cats = site.categories | sort %}
|
||||
{% for category in sorted_cats %}
|
||||
{% assign cat_name = category[0] %}
|
||||
{% assign cat_posts = category[1] %}
|
||||
{% unless site.module_order contains cat_name %}
|
||||
{% include folder_tree.html name=cat_name posts=cat_posts %}
|
||||
{% endunless %}
|
||||
{% endfor %}
|
||||
|
||||
</div>
|
||||
42
nginx.conf
Normal file
42
nginx.conf
Normal file
@@ -0,0 +1,42 @@
|
||||
server {
|
||||
listen 80;
|
||||
server_name localhost;
|
||||
# define root globally so all location blocks (images, css, etc) inherit it
|
||||
root /usr/share/nginx/html;
|
||||
index index.html index.htm;
|
||||
# gzip compression
|
||||
gzip on;
|
||||
gzip_types text/plain text/css application/json application/javascript text/xml appl>
|
||||
gzip_vary on;
|
||||
gzip_min_length 1000;
|
||||
|
||||
# assets (images, fonts, favicons) - cache for 1 Year
|
||||
location ~* \.(jpg|jpeg|gif|png|ico|svg|woff|woff2|ttf|eot)$ {
|
||||
expires 365d;
|
||||
add_header Cache-Control "public, no-transform";
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
# code (css, js) - cache for 1 month
|
||||
location ~* \.(css|js)$ {
|
||||
expires 30d;
|
||||
add_header Cache-Control "public, no-transform";
|
||||
try_files $uri =404;
|
||||
}
|
||||
|
||||
# standard routing - short cache
|
||||
location / {
|
||||
try_files $uri $uri/ $uri.html =404;
|
||||
}
|
||||
|
||||
# error page
|
||||
error_page 404 /404.html;
|
||||
|
||||
location = /404.html {
|
||||
internal ;
|
||||
}
|
||||
|
||||
# logging / lb config
|
||||
real_ip_header X-Forwarded-For;
|
||||
set_real_ip_from 10.0.0.0/8;
|
||||
}
|
||||
35
package.json
Normal file
35
package.json
Normal file
@@ -0,0 +1,35 @@
|
||||
{
|
||||
"name": "cntest",
|
||||
"version": "1.0.0",
|
||||
"description": "In dev: ```bash bundle exec jekyll serve ```",
|
||||
"main": "index.js",
|
||||
"scripts": {
|
||||
"test": "echo \"Error: no test specified\" && exit 1",
|
||||
"prepare": "husky",
|
||||
"format": "prettier --write .",
|
||||
"dev": "bundle exec jekyll serve",
|
||||
"build": "bundle exec jekyll build"
|
||||
},
|
||||
"lint-staged": {
|
||||
"*.{html,md,js,css,scss,json,yaml,yml,conf}": "prettier --write"
|
||||
},
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": "git+https://github.com/wboughattas/cntest.git"
|
||||
},
|
||||
"keywords": [],
|
||||
"author": "",
|
||||
"license": "ISC",
|
||||
"type": "commonjs",
|
||||
"bugs": {
|
||||
"url": "https://github.com/wboughattas/cntest/issues"
|
||||
},
|
||||
"homepage": "https://github.com/wboughattas/cntest#readme",
|
||||
"devDependencies": {
|
||||
"@shopify/prettier-plugin-liquid": "^1.10.0",
|
||||
"prettier-plugin-nginx": "^1.0.3",
|
||||
"husky": "^9.1.7",
|
||||
"lint-staged": "^16.2.7",
|
||||
"prettier": "^3.7.4"
|
||||
}
|
||||
}
|
||||
500
pnpm-lock.yaml
generated
Normal file
500
pnpm-lock.yaml
generated
Normal file
@@ -0,0 +1,500 @@
|
||||
lockfileVersion: '9.0'
|
||||
|
||||
settings:
|
||||
autoInstallPeers: true
|
||||
excludeLinksFromLockfile: false
|
||||
|
||||
importers:
|
||||
.:
|
||||
devDependencies:
|
||||
'@shopify/prettier-plugin-liquid':
|
||||
specifier: ^1.10.0
|
||||
version: 1.10.0(prettier@3.7.4)
|
||||
husky:
|
||||
specifier: ^9.1.7
|
||||
version: 9.1.7
|
||||
lint-staged:
|
||||
specifier: ^16.2.7
|
||||
version: 16.2.7
|
||||
prettier:
|
||||
specifier: ^3.7.4
|
||||
version: 3.7.4
|
||||
prettier-plugin-nginx:
|
||||
specifier: ^1.0.3
|
||||
version: 1.0.3
|
||||
|
||||
packages:
|
||||
'@shopify/liquid-html-parser@2.9.0':
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bkI4tLbU47YUxpgbMa9fgeJjFEMvRNEFL644Yk0ZKo5H1IRzU4pPyCQ6PkGvb0JJnt7OZ+RDGvb6ZLCnAR2Z/A==,
|
||||
}
|
||||
|
||||
'@shopify/prettier-plugin-liquid@1.10.0':
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-csHYjwuT34o8ja6EY0dUBYQS5UVwsKwRYxGiuG816Ov0B8lVd8FUjOwWUk2SnrNx3cGgL0no7z+Byapp7sC1Uw==,
|
||||
}
|
||||
peerDependencies:
|
||||
prettier: ^2.0.0 || ^3.0.0
|
||||
|
||||
ansi-escapes@7.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
ansi-regex@6.2.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==,
|
||||
}
|
||||
engines: { node: '>=12' }
|
||||
|
||||
ansi-styles@6.2.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==,
|
||||
}
|
||||
engines: { node: '>=12' }
|
||||
|
||||
braces@3.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==,
|
||||
}
|
||||
engines: { node: '>=8' }
|
||||
|
||||
cli-cursor@5.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
cli-truncate@5.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-SroPvNHxUnk+vIW/dOSfNqdy1sPEFkrTk6TUtqLCnBlo3N7TNYYkzzN7uSD6+jVjrdO4+p8nH7JzH6cIvUem6A==,
|
||||
}
|
||||
engines: { node: '>=20' }
|
||||
|
||||
colorette@2.0.20:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==,
|
||||
}
|
||||
|
||||
commander@14.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-TywoWNNRbhoD0BXs1P3ZEScW8W5iKrnbithIl0YH+uCmBd0QpPOA8yc82DS3BIE5Ma6FnBVUsJ7wVUDz4dvOWQ==,
|
||||
}
|
||||
engines: { node: '>=20' }
|
||||
|
||||
emoji-regex@10.6.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==,
|
||||
}
|
||||
|
||||
environment@1.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
eventemitter3@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==,
|
||||
}
|
||||
|
||||
fill-range@7.1.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==,
|
||||
}
|
||||
engines: { node: '>=8' }
|
||||
|
||||
get-east-asian-width@1.4.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
html-styles@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-cDl5dcj73oI4Hy0DSUNh54CAwslNLJRCCoO+RNkVo+sBrjA/0+7E/xzvj3zH/GxbbBLGJhE0hBe1eg+0FINC6w==,
|
||||
}
|
||||
|
||||
husky@9.1.7:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5gs5ytaNjBrh5Ow3zrvdUUY+0VxIuWVL4i9irt6friV+BqdCfmV11CQTWMiBYWHbXhco+J1kHfTOUkePhCDvMA==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
hasBin: true
|
||||
|
||||
is-fullwidth-code-point@5.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
is-number@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==,
|
||||
}
|
||||
engines: { node: '>=0.12.0' }
|
||||
|
||||
isarray@1.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==,
|
||||
}
|
||||
|
||||
isobject@2.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-+OUdGJlgjOBZDfxnDjYYG6zp487z0JGNQq3cYQYg5f5hKR+syHMsaztzGeml/4kGG55CSpKSpWTY+jYGgsHLgA==,
|
||||
}
|
||||
engines: { node: '>=0.10.0' }
|
||||
|
||||
line-column@1.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Ktrjk5noGYlHsVnYWh62FLVs4hTb8A3e+vucNZMgPeAOITdshMSgv4cCZQeRDjm7+goqmo6+liZwTXo+U3sVww==,
|
||||
}
|
||||
|
||||
lint-staged@16.2.7:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-lDIj4RnYmK7/kXMya+qJsmkRFkGolciXjrsZ6PC25GdTfWOAWetR0ZbsNXRAj1EHHImRSalc+whZFg56F5DVow==,
|
||||
}
|
||||
engines: { node: '>=20.17' }
|
||||
hasBin: true
|
||||
|
||||
listr2@9.0.5:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-ME4Fb83LgEgwNw96RKNvKV4VTLuXfoKudAmm2lP8Kk87KaMK0/Xrx/aAkMWmT8mDb+3MlFDspfbCs7adjRxA2g==,
|
||||
}
|
||||
engines: { node: '>=20.0.0' }
|
||||
|
||||
log-update@6.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
micromatch@4.0.8:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==,
|
||||
}
|
||||
engines: { node: '>=8.6' }
|
||||
|
||||
mimic-function@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
nano-spawn@2.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tacvGzUY5o2D8CBh2rrwxyNojUsZNU2zjNTzKQrkgGJQTbGAfArVWXSKMBokBeeg6C7OLRGUEyoFlYbfeWQIqw==,
|
||||
}
|
||||
engines: { node: '>=20.17' }
|
||||
|
||||
ohm-js@17.3.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-LySMdjweN1hKBMMV8lM44+1wiewkndDNNJxtgVAscs7y683MXCdQZLsIaw64/p8NuqYbKOWZoHIOA5DU/xchoA==,
|
||||
}
|
||||
engines: { node: '>=0.12.1' }
|
||||
|
||||
onetime@7.0.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
picomatch@2.3.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==,
|
||||
}
|
||||
engines: { node: '>=8.6' }
|
||||
|
||||
pidtree@0.6.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==,
|
||||
}
|
||||
engines: { node: '>=0.10' }
|
||||
hasBin: true
|
||||
|
||||
prettier-plugin-nginx@1.0.3:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-vV5q85s8XnV6NEgvz1gVLfZhmxAxY03MyOYj2ApBpjFkbs00lRsRkTmqO9L39ADuD18z1RRCcfZ3eVxKhI/nqg==,
|
||||
}
|
||||
|
||||
prettier@3.7.4:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-v6UNi1+3hSlVvv8fSaoUbggEM5VErKmmpGA7Pl3HF8V6uKY7rvClBOJlH6yNwQtfTueNkGVpOv/mtWL9L4bgRA==,
|
||||
}
|
||||
engines: { node: '>=14' }
|
||||
hasBin: true
|
||||
|
||||
restore-cursor@5.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
rfdc@1.4.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==,
|
||||
}
|
||||
|
||||
signal-exit@4.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==,
|
||||
}
|
||||
engines: { node: '>=14' }
|
||||
|
||||
slice-ansi@7.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
string-argv@0.3.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==,
|
||||
}
|
||||
engines: { node: '>=0.6.19' }
|
||||
|
||||
string-width@7.2.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
string-width@8.1.0:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-Kxl3KJGb/gxkaUMOjRsQ8IrXiGW75O4E3RPjFIINOVH8AMl2SQ/yWdTzWwF3FevIX9LcMAjJW+GRwAlAbTSXdg==,
|
||||
}
|
||||
engines: { node: '>=20' }
|
||||
|
||||
strip-ansi@7.1.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==,
|
||||
}
|
||||
engines: { node: '>=12' }
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==,
|
||||
}
|
||||
engines: { node: '>=8.0' }
|
||||
|
||||
wrap-ansi@9.0.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==,
|
||||
}
|
||||
engines: { node: '>=18' }
|
||||
|
||||
yaml@2.8.2:
|
||||
resolution:
|
||||
{
|
||||
integrity: sha512-mplynKqc1C2hTVYxd0PU2xQAc22TI1vShAYGksCCfxbn/dFwnHTNi1bvYsBTkhdUNtGIf5xNOg938rrSSYvS9A==,
|
||||
}
|
||||
engines: { node: '>= 14.6' }
|
||||
hasBin: true
|
||||
|
||||
snapshots:
|
||||
'@shopify/liquid-html-parser@2.9.0':
|
||||
dependencies:
|
||||
line-column: 1.0.2
|
||||
ohm-js: 17.3.0
|
||||
|
||||
'@shopify/prettier-plugin-liquid@1.10.0(prettier@3.7.4)':
|
||||
dependencies:
|
||||
'@shopify/liquid-html-parser': 2.9.0
|
||||
html-styles: 1.0.0
|
||||
prettier: 3.7.4
|
||||
|
||||
ansi-escapes@7.2.0:
|
||||
dependencies:
|
||||
environment: 1.1.0
|
||||
|
||||
ansi-regex@6.2.2: {}
|
||||
|
||||
ansi-styles@6.2.3: {}
|
||||
|
||||
braces@3.0.3:
|
||||
dependencies:
|
||||
fill-range: 7.1.1
|
||||
|
||||
cli-cursor@5.0.0:
|
||||
dependencies:
|
||||
restore-cursor: 5.1.0
|
||||
|
||||
cli-truncate@5.1.1:
|
||||
dependencies:
|
||||
slice-ansi: 7.1.2
|
||||
string-width: 8.1.0
|
||||
|
||||
colorette@2.0.20: {}
|
||||
|
||||
commander@14.0.2: {}
|
||||
|
||||
emoji-regex@10.6.0: {}
|
||||
|
||||
environment@1.1.0: {}
|
||||
|
||||
eventemitter3@5.0.1: {}
|
||||
|
||||
fill-range@7.1.1:
|
||||
dependencies:
|
||||
to-regex-range: 5.0.1
|
||||
|
||||
get-east-asian-width@1.4.0: {}
|
||||
|
||||
html-styles@1.0.0: {}
|
||||
|
||||
husky@9.1.7: {}
|
||||
|
||||
is-fullwidth-code-point@5.1.0:
|
||||
dependencies:
|
||||
get-east-asian-width: 1.4.0
|
||||
|
||||
is-number@7.0.0: {}
|
||||
|
||||
isarray@1.0.0: {}
|
||||
|
||||
isobject@2.1.0:
|
||||
dependencies:
|
||||
isarray: 1.0.0
|
||||
|
||||
line-column@1.0.2:
|
||||
dependencies:
|
||||
isarray: 1.0.0
|
||||
isobject: 2.1.0
|
||||
|
||||
lint-staged@16.2.7:
|
||||
dependencies:
|
||||
commander: 14.0.2
|
||||
listr2: 9.0.5
|
||||
micromatch: 4.0.8
|
||||
nano-spawn: 2.0.0
|
||||
pidtree: 0.6.0
|
||||
string-argv: 0.3.2
|
||||
yaml: 2.8.2
|
||||
|
||||
listr2@9.0.5:
|
||||
dependencies:
|
||||
cli-truncate: 5.1.1
|
||||
colorette: 2.0.20
|
||||
eventemitter3: 5.0.1
|
||||
log-update: 6.1.0
|
||||
rfdc: 1.4.1
|
||||
wrap-ansi: 9.0.2
|
||||
|
||||
log-update@6.1.0:
|
||||
dependencies:
|
||||
ansi-escapes: 7.2.0
|
||||
cli-cursor: 5.0.0
|
||||
slice-ansi: 7.1.2
|
||||
strip-ansi: 7.1.2
|
||||
wrap-ansi: 9.0.2
|
||||
|
||||
micromatch@4.0.8:
|
||||
dependencies:
|
||||
braces: 3.0.3
|
||||
picomatch: 2.3.1
|
||||
|
||||
mimic-function@5.0.1: {}
|
||||
|
||||
nano-spawn@2.0.0: {}
|
||||
|
||||
ohm-js@17.3.0: {}
|
||||
|
||||
onetime@7.0.0:
|
||||
dependencies:
|
||||
mimic-function: 5.0.1
|
||||
|
||||
picomatch@2.3.1: {}
|
||||
|
||||
pidtree@0.6.0: {}
|
||||
|
||||
prettier-plugin-nginx@1.0.3: {}
|
||||
|
||||
prettier@3.7.4: {}
|
||||
|
||||
restore-cursor@5.1.0:
|
||||
dependencies:
|
||||
onetime: 7.0.0
|
||||
signal-exit: 4.1.0
|
||||
|
||||
rfdc@1.4.1: {}
|
||||
|
||||
signal-exit@4.1.0: {}
|
||||
|
||||
slice-ansi@7.1.2:
|
||||
dependencies:
|
||||
ansi-styles: 6.2.3
|
||||
is-fullwidth-code-point: 5.1.0
|
||||
|
||||
string-argv@0.3.2: {}
|
||||
|
||||
string-width@7.2.0:
|
||||
dependencies:
|
||||
emoji-regex: 10.6.0
|
||||
get-east-asian-width: 1.4.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
string-width@8.1.0:
|
||||
dependencies:
|
||||
get-east-asian-width: 1.4.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
strip-ansi@7.1.2:
|
||||
dependencies:
|
||||
ansi-regex: 6.2.2
|
||||
|
||||
to-regex-range@5.0.1:
|
||||
dependencies:
|
||||
is-number: 7.0.0
|
||||
|
||||
wrap-ansi@9.0.2:
|
||||
dependencies:
|
||||
ansi-styles: 6.2.3
|
||||
string-width: 7.2.0
|
||||
strip-ansi: 7.1.2
|
||||
|
||||
yaml@2.8.2: {}
|
||||
Reference in New Issue
Block a user