Overhaul styling

- Use dart-sass as the transpiler (because of @use at-rule)
  ==> we can't use Bazel anymore -_- ==> go back to multiple GitLab CI/CD jobs
- Modularize scss files (sadly the templated text is still needed to be in the
  main file)
- Add shortcodes: icon, link, admonition, table, mark, spoiler and details
  ==> Vendor some web fonts
- Use the new hugo.{toml,yaml} configuration file (was config.yaml)
- Add render-link hook (to open external links in a new tab)
This commit is contained in:
Hoang Nguyen 2023-06-25 00:00:00 +07:00
parent 38ecab395f
commit 513119c41f
35 changed files with 579 additions and 1363 deletions

View File

@ -1,3 +0,0 @@
try-import ci.bazelrc
common --experimental_enable_bzlmod

View File

@ -1,21 +1,14 @@
root = true
[*]
tab_width = 4
charset = utf-8
end_of_line = lf
tab_width = 4
indent_size = 2
indent_style = space
insert_final_newline = true
trim_trailing_whitespace = true
[{*.css,*.scss,*.html,*.xml}]
indent_style = space
indent_size = 2
[*.md]
indent_style = space
indent_size = 2
max_line_length = 80
trim_trailing_whitespace = false
[package.json]
indent_style = tab

2
.gitignore vendored
View File

@ -1,4 +1,4 @@
/.hugo_cache/
/public/
/resources/
/.hugo_build.lock
/bazel-*

View File

@ -6,19 +6,40 @@ default:
stages:
- build
- deploy
# NOTE: there is no caching right now, so the build could be slow
cloudflare_pages:
stage: build
image:
name: gcr.io/bazel-public/bazel:6.2.1
entrypoint: [""]
script:
- |
cat >ci.bazelrc <<EOF
common --show_timestamps
common --noshow_progress --noshow_loading_progress
EOF
- bazel run //:upload -- --branch="$CI_COMMIT_REF_NAME"
workflow:
rules:
- if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH
build:hugo:
stage: build
image: alpine:edge
variables:
HUGO_CACHEDIR: $CI_PROJECT_DIR/.hugo_cache
script:
- echo "https://dl-cdn.alpinelinux.org/alpine/edge/testing" >> /etc/apk/repositories
- apk add --no-cache hugo dart-sass
- hugo --verbose --gc --panicOnWarning
cache:
key: resources-$CI_COMMIT_REF_NAME
paths:
- resources/
- .hugo_cache/
artifacts:
expire_in: 1 hour
paths:
- public/
deploy:cloudflare_pages:
stage: deploy
image:
name: node:20-alpine
entrypoint: [""]
script: |
npx wrangler pages deploy \
--project-name=folliehiyuki \
--branch="$CI_COMMIT_REF_NAME" \
public/
dependencies:
- build:hugo

View File

@ -1,35 +0,0 @@
load("@rules_hugo//hugo:rules.bzl", "hugo_site", "hugo_serve")
hugo_site(
name = "public",
config = "config.yaml",
assets = glob(["assets/**"]),
content = glob(["content/**"]),
layouts = glob(["layouts/**"]),
static = glob(["static/**"]),
quiet = False,
)
hugo_serve(name = "serve", dep = [":public"])
load("@npm//:defs.bzl", "npm_link_all_packages")
npm_link_all_packages(name = "node_modules")
load("@npm//:wrangler/package_json.bzl", wrangler_bin = "bin")
# NOTE: CLOUDFLARE_ACCOUNT_ID and CLOUDFLARE_API_TOKEN are set as CI/CD variables
CF_PAGES_PROJECT = "folliehiyuki"
# Mark the run as dirty, since wrangler is run inside a git-ignored directory
wrangler_bin.wrangler_binary(
name = "upload",
data = [":public"],
args = [
"pages",
"deploy",
"--commit-dirty=true",
"--project-name=%s" % CF_PAGES_PROJECT,
"public",
],
)

View File

@ -1,16 +0,0 @@
module(repo_name = "personal_blog")
bazel_dep(name = "aspect_rules_js", version = "1.27.1")
npm = use_extension("@aspect_rules_js//npm:extensions.bzl", "npm")
npm.npm_translate_lock(
name = "npm",
pnpm_lock = "//:pnpm-lock.yaml",
)
use_repo(npm, "npm")
pnpm = use_extension("@aspect_rules_js//npm:extensions.bzl", "pnpm")
use_repo(pnpm, "pnpm")

View File

@ -8,6 +8,7 @@ Powered by [hugo](https://gohugo.io/) static site generator.
- [ ] Toggle TOC (check <https://github.com/alex-shpak/hugo-book>)
- [ ] Add KaTeX support (maybe?)
- [ ] More icons fonts: [Weather Icons](https://github.com/erikflowers/weather-icons), [Codicons](https://github.com/microsoft/vscode-codicons), [Material Design Icons](https://github.com/Templarian/MaterialDesign)
## Ideas
@ -22,7 +23,7 @@ These are things I've encountered and found interesting to talk about. I might w
## 🌟 Credits
The website's theme is based on [hugo-flex](https://github.com/de-souza/hugo-flex).
The website's theme is initially based on [hugo-flex](https://github.com/de-souza/hugo-flex).
## 📋 Licenses

View File

@ -1,15 +0,0 @@
# NOTE: rules_hugo doesn't exist on registry.bazel.build so keep it in WORKSPACE
load("@bazel_tools//tools/build_defs/repo:http.bzl", "http_archive")
RULES_HUGO_COMMIT = "294a8ec626a394011d35397108c930be631ab9fa"
http_archive(
name = "rules_hugo",
url = "https://github.com/stackb/rules_hugo/archive/%s.zip" % RULES_HUGO_COMMIT,
sha256 = "8df370f374dc72701b65b7c8a8add8ccb8423a845e973993fa9c68f8b516c9be",
strip_prefix = "rules_hugo-%s" % RULES_HUGO_COMMIT,
)
load("@rules_hugo//hugo:rules.bzl", "hugo_repository")
hugo_repository(name = "hugo", extended = True, version = "0.113.0")

154
assets/css/_base.scss Normal file
View File

@ -0,0 +1,154 @@
:root {
--color-bg: #f2f4f8;
--color-fg: #3b4252;
--color-black: #2e3440;
--color-gray: #d8dee9;
--color-cyan: #88c0d0;
--color-blue: #5e81ac;
--color-yellow: #ebcb8b;
--color-red: #bf616a;
--color-green: #a3be8c;
--color-purple: #b48ead;
@media (prefers-color-scheme: dark) {
--color-bg: #3b4252;
--color-fg: #eceff4;
--color-gray: #434c5e;
--color-blue: #81a1c1;
}
}
*,
*::before,
*::after {
box-sizing: inherit;
}
body {
box-sizing: border-box;
font-family: "Iosevka Aile Web", sans-serif;
display: flex;
line-height: 1.5;
flex-direction: column;
min-height: 100vh;
margin: 0;
padding: 0;
color: var(--color-fg);
background: var(--color-bg);
}
main {
flex-grow: 1;
}
img {
max-width: 100%;
border-radius: 0.4rem;
}
pre {
overflow-x: auto;
border: 0.1rem solid var(--color-black);
border-radius: 0.4rem;
padding: 1rem;
}
blockquote {
border-left: 0.25rem solid var(--color-blue);
background: var(--color-gray);
margin: 1rem 0;
padding: 0.1rem 0.8rem;
}
code {
font-family: "Iosevka Web", monospace;
// For small code snippets in between normal text
&:not([class]) {
border-radius: 0.4rem;
background: var(--color-gray);
padding: 0.25rem;
}
}
details > p {
margin-left: 0.3rem;
padding-left: 0.5rem;
border-left: 0.1rem solid var(--color-fg);
}
mark {
background: var(--color-yellow);
color: var(--color-fg);
@media (prefers-color-scheme: dark) {
color: var(--color-black);
}
}
h1 {
font-size: 1.75rem;
}
@for $i from 2 through 4 {
h#{$i} {
font-size: 2 - $i * 0.25rem;
&:hover > a {
visibility: visible;
}
}
}
a {
color: var(--color-blue);
text-decoration: none;
position: relative;
&.anchor {
visibility: hidden;
transition: 0.25s;
}
&.footnote-ref {
&::before {
content: "[";
}
&::after {
content: "]";
}
}
&:hover:not(.Banner-link):not(.Heading-link) {
color: var(--color-cyan);
border-bottom: 0.1rem solid var(--color-cyan);
&:has(img) {
border-bottom: none;
}
}
}
table {
width: 100%;
}
th {
background: var(--color-cyan);
@media (prefers-color-scheme: dark) {
background: var(--color-blue);
}
}
table, th, td {
border: 0.1rem solid var(--color-fg);
border-collapse: collapse;
padding: 0.25rem 0.5rem;
overflow-wrap: normal;
word-break: normal;
}
hr {
color: var(--color-fg);
}

View File

@ -1,11 +1,12 @@
/* Background */ .bg { color: #d8dee9; background-color: #2e3440 }
/* PreWrapper */ .chroma { color: #d8dee9; background-color: #2e3440; }
/* Error */ .chroma .err { color: #bf616a }
/* LineLink */ .chroma .lnlinks { outline: none; text-decoration: none; color: inherit }
/* LineTableTD */ .chroma .lntd { vertical-align: top; padding: 0; margin: 0; border: 0; }
/* LineTable */ .chroma .lntable { border-spacing: 0; padding: 0; margin: 0; border: 0; }
/* LineHighlight */ .chroma .hl { background-color: #4c566a }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7b88a1 }
/* LineNumbers */ .chroma .ln { white-space: pre; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7b88a1 }
/* LineNumbersTable */ .chroma .lnt { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7b88a1 }
/* LineNumbers */ .chroma .ln { white-space: pre; -webkit-user-select: none; user-select: none; margin-right: 0.4em; padding: 0 0.4em 0 0.4em;color: #7b88a1 }
/* Line */ .chroma .line { display: flex; }
/* Keyword */ .chroma .k { color: #81a1c1; font-weight: bold }
/* KeywordConstant */ .chroma .kc { color: #81a1c1; font-weight: bold }
@ -24,6 +25,8 @@
/* NameFunction */ .chroma .nf { color: #88c0d0 }
/* NameLabel */ .chroma .nl { color: #8fbcbb }
/* NameNamespace */ .chroma .nn { color: #8fbcbb }
/* NameOther */ .chroma .nx { color: #d8dee9 }
/* NameProperty */ .chroma .py { color: #8fbcbb }
/* NameTag */ .chroma .nt { color: #81a1c1 }
/* LiteralString */ .chroma .s { color: #a3be8c }
/* LiteralStringAffix */ .chroma .sa { color: #a3be8c }

103
assets/css/_fonts.scss Normal file
View File

@ -0,0 +1,103 @@
@font-face {
font-family: "Iosevka Aile Web";
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: normal;
src: url("/fonts/iosevka-aile-regular.woff2") format("woff2");
}
@font-face {
font-family: "Iosevka Aile Web";
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: italic;
src: url("/fonts/iosevka-aile-italic.woff2") format("woff2");
}
@font-face {
font-family: "Iosevka Aile Web";
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: normal;
src: url("/fonts/iosevka-aile-bold.woff2") format("woff2");
}
@font-face {
font-family: "Iosevka Aile Web";
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: italic;
src: url("/fonts/iosevka-aile-bolditalic.woff2") format("woff2");
}
@font-face {
font-family: "Iosevka Web";
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: normal;
src: url("/fonts/iosevka-regular.woff2") format("woff2");
}
@font-face {
font-family: "Iosevka Web";
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: italic;
src: url("/fonts/iosevka-italic.woff2") format("woff2");
}
@font-face {
font-family: "Iosevka Web";
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: normal;
src: url("/fonts/iosevka-bold.woff2") format("woff2");
}
@font-face {
font-family: "Iosevka Web";
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: italic;
src: url("/fonts/iosevka-bolditalic.woff2") format("woff2");
}
@font-face {
font-family: "Font Awesome 6 Free";
font-display: block;
font-weight: 900;
font-style: normal;
src: url("/fonts/fa-solid-900.woff2") format("woff2");
}
@font-face {
font-family: "Font Awesome 6 Brands";
font-display: block;
font-weight: 400;
font-style: normal;
src: url("/fonts/fa-brands-400.woff2") format("woff2");
}
@font-face {
font-family: "devicon";
font-display: block;
font-weight: 400;
font-style: normal;
src: url("/fonts/devicon.woff") format("woff");
}
@font-face {
font-family: "font-logos";
font-display: block;
font-weight: 400;
font-style: normal;
src: url("/fonts/font-logos.woff2") format("woff2");
}

View File

@ -1,71 +0,0 @@
@font-face {
font-family: 'Iosevka Aile Web';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: normal;
src: url('/fonts/iosevka-aile-regular.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Aile Web';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: italic;
src: url('/fonts/iosevka-aile-italic.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Aile Web';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: normal;
src: url('/fonts/iosevka-aile-bold.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Aile Web';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: italic;
src: url('/fonts/iosevka-aile-bolditalic.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Web';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: normal;
src: url('/fonts/iosevka-regular.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Web';
font-display: swap;
font-weight: 400;
font-stretch: normal;
font-style: italic;
src: url('/fonts/iosevka-italic.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Web';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: normal;
src: url('/fonts/iosevka-bold.woff2') format('woff2');
}
@font-face {
font-family: 'Iosevka Web';
font-display: swap;
font-weight: 700;
font-stretch: normal;
font-style: italic;
src: url('/fonts/iosevka-bolditalic.woff2') format('woff2');
}

View File

@ -1,148 +1,57 @@
@import "normalize";
@import "fonts";
@import "nord";
@charset "UTF-8";
:root {
--bg: #f2f4f8;
--fg: #3b4252;
--black: #2e3440;
--gray: #d8dee9;
--cyan: #88c0d0;
--blue: #5e81ac;
@use "_vendor/normalize";
@use "fonts";
@use "chroma";
@use "base";
@media (prefers-color-scheme: dark) {
--bg: #3b4252;
--fg: #eceff4;
--gray: #434c5e;
--blue: #81a1c1;
@mixin admon($fg, $sign, $title) {
border-top: 2.25rem solid $fg;
background: color-mix(in srgb, $fg 50%, var(--color-bg));
&::before {
font-family: "Font Awesome 6 Free";
position: absolute;
content: $sign;
top: 0.4rem;
left: 0.75rem;
}
&::after {
position: absolute;
content: $title;
font-weight: bold;
top: 0.5rem;
left: 2.25rem;
}
}
body {
font-family: "Iosevka Aile Web", sans-serif;
line-height: 1.6;
display: flex;
flex-direction: column;
min-height: 100vh;
margin: 0;
padding: 0;
color: var(--fg);
background: var(--bg);
}
main {
flex-grow: 1;
}
img {
max-width: 100%;
border-radius: 0.4rem;
}
pre {
overflow-x: auto;
border: 0.1rem solid var(--black);
border-radius: 0.4rem;
padding: 1rem;
}
blockquote {
border-left: 0.25rem solid var(--blue);
background: var(--gray);
.admonition {
margin: 1rem 0;
padding: 0.1rem 0.8rem;
}
code {
font-family: "Iosevka Web", monospace;
// For small code snippets in between normal text
&:not([class]) {
border-radius: 0.4rem;
background: var(--gray);
padding: 0.25rem;
}
}
table {
margin-left: auto;
margin-right: auto;
}
table, th, td {
border: 0.1rem solid var(--fg);
border-collapse: collapse;
padding: 0.25rem 0.5rem;
}
th {
background: var(--cyan);
}
h1 {
font-size: 1.75rem;
}
h2 {
font-size: 1.5rem;
}
h3 {
font-size: 1.25rem;
}
h4 {
font-size: 1rem;
}
h2:hover a, h3:hover a, h4:hover a {
visibility: visible;
}
a {
color: var(--blue);
text-decoration: none;
display: inline-block;
position: relative;
&.anchor {
visibility: hidden;
transition: 0.25s;
p {
padding: 1rem;
}
&.footnote-ref {
&::before {
content: "[";
}
&::after {
content: "]";
}
&-tip p {
@include admon(var(--color-green), "\f0eb", "TIP");
}
&:hover:not(.Banner-link):not(.Heading-link) {
color: var(--cyan);
text-decoration: underline;
}
}
.toc {
float: right;
margin: 1rem 0rem 1rem 1rem;
width: 45%;
border: 0.1rem solid var(--gray);
border-radius: 0.4rem;
background: var(--gray);
&-header {
padding-left: 1rem;
&-note p {
@include admon(var(--color-blue), "\f303", "NOTE");
}
@media only screen and (max-width: 1000px) {
float: none;
margin: auto;
margin-top: 1rem;
width: 60%;
&-warning p {
@include admon(var(--color-yellow), "\f071", "WARNING");
}
&-important p {
@include admon(var(--color-red), "\f06a", "IMPORTANT");
}
&-caution p {
@include admon(var(--color-purple), "\f06d", "CAUTION");
}
}
@ -160,18 +69,17 @@ a {
&-link {
font-size: 1.5rem;
color: var(--fg);
color: var(--color-fg);
padding: 0.5rem 0.5rem;
&::after {
content: "";
display: block;
width: 0;
height: 2px;
left: 50%;
bottom: 0;
position: absolute;
background: var(--fg);
background: var(--color-fg);
transition: all 0.25s ease-in-out;
}
@ -207,7 +115,7 @@ a {
.Footer {
text-align: center;
padding: 0.5rem;
background: var(--gray);
background: var(--color-gray);
span {
margin: 0.5rem 0.75rem;
@ -225,7 +133,7 @@ a {
}
&-background {
background: var(--gray);
background: var(--color-gray);
}
&-clickable {
@ -234,3 +142,36 @@ a {
display: inline-block;
}
}
.toc {
float: right;
margin: 1rem 0rem 1rem 1rem;
width: 45%;
border: 0.1rem solid var(--color-gray);
border-radius: 0.4rem;
background: var(--color-gray);
&-header {
padding-left: 1rem;
}
@media only screen and (max-width: 1000px) {
float: none;
margin: auto;
margin-top: 1rem;
width: 60%;
}
}
.spoiler {
background: var(--color-fg);
color: transparent;
cursor: help;
user-select: none;
transition: background 0.3s ease 0.2s, color 0.2s ease 0.25s;
&:focus, &:hover {
color: inherit;
background: inherit;
}
}

View File

@ -8,13 +8,6 @@
margin-bottom: 2rem;
}
h3 {
text-align: center;
color: var(--fg) !important;
}
main {
display: flex !important;
align-items: center !important;
justify-content: center !important;
}

View File

@ -1,58 +0,0 @@
baseURL: https://www.folliehiyuki.com
languageCode: en-us
title: FollieHiyuki's blog
hasCJKLanguage: true
enableEmoji: true
enableRobotsTXT: true
disablePathToLower: true
disableHugoGeneratorInject: true
disableKinds:
- taxonomy
- term
# rssLimit: 10
menu:
nav:
- name: Blog
url: blog/
weight: 1
- name: About
url: about/
weight: 2
outputs:
section:
- HTML
minify:
minifyOutput: true
markup:
goldmark:
renderer:
hardWraps: true
unsafe: false
parser:
attribute:
block: true
tableOfContents:
startLevel: 2
endLevel: 4
ordered: false
highlight:
tabWidth: 2
noClasses: false
privacy:
disqus:
disable: true
googleAnalytics:
disable: true
instagram:
disable: true
twitter:
disable: true
vimeo:
disable: true
youtube:
disable: true

View File

@ -6,5 +6,3 @@ css: css/pages/homepage.css
{{< figure src="avatar.webp" alt="avatar" class="avatar" width=100% height=100% >}}
### YAML editor by day, anime nerd by night
### [RSS](/index.xml) · [GitHub](https://github.com/FollieHiyuki) · [Gitea](https://git.disroot.org/FollieHiyuki) · [Docs](https://docs.folliehiyuki.com)

View File

@ -1,13 +1,23 @@
---
title: About me
description: About FollieHiyuki and other things related
description: About FollieHiyuki and other related things
---
My name is Hoang Nguyen Huy, a DevOps engineer and a massive weeb that likes FOSS and cute anime girls. You might know me on the Internet as *folliehiyuki* (or the shorten form - *follie*).
## Contact
## Contacts
- Email: folliekazetani@protonmail.com
`text/plain` messages with PGP encryption are encouraged.
My public PGP key: [0xB0567C20730E9B11](publickey.txt)
- Fediverse: [@folliehiyuki@fosstodon.org](https://fosstodon.org/@folliehiyuki)
- Fediverse: {{< link rel="me noopener external" target="_blank" href="https://fosstodon.org/@folliehiyuki" >}}@folliehiyuki@fosstodon.org{{< /link >}}
## Public keys
- PGP: [0xB0567C20730E9B11](publickey.txt)
## Code forges
- [GitHub](https://github.com/FollieHiyuki)
- [GitLab](https://gitlab.com/FollieHiyuki)
- [Disroot's Gitea](https://git.disroot.org/FollieHiyuki)
- [Codeberg](https://codeberg.org/FollieHiyuki)

View File

@ -49,7 +49,7 @@ $ gitlab-psql
And if it still doesn't work? Just go to the [migration file list](https://gitlab.com/gitlab-org/gitlab/-/tree/master/spec/migrations), find the specific Ruby migration code that failed in the batch, and replicate it with SQL commands directly inside `gitlab-psql` console. Remember to mark the migration as finished afterward.
Another example, just recently, is the introduction of [`admin_mode` scope for Personal Access Token](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107875) in version 15.8. All admin tokens have this scope injected to them automatically, while there are no way to set or unset it through GitLab API. What it means is that all my Pulumi automation code to manage admin access tokens is now broken, because Pulumi will try to recreate the tokens every time it runs, due to the mismatched scopes in state. How nice!
Another example, just recently, is the introduction of [*admin_mode* scope for Personal Access Token](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/107875) in version 15.8. All admin tokens have this scope injected to them automatically, while there are no way to set or unset it through GitLab API. What it means is that all my Pulumi automation code to manage admin access tokens is now broken, because Pulumi will try to recreate the tokens every time it runs, due to the mismatched scopes in state. How nice!
### Tokens

View File

@ -119,9 +119,9 @@ Voilà! Enjoy your new rootfull container setup!
#### Starting containerd
In rootless mode, you need [`containerd_rootless.sh`](https://github.com/containerd/nerdctl/blob/master/extras/rootless/containerd-rootless.sh) script and a way to run it on user login (for convenient sake).
In rootless mode, you need [containerd_rootless.sh](https://github.com/containerd/nerdctl/blob/master/extras/rootless/containerd-rootless.sh) script and a way to run it on user login (for convenient sake).
If you use `systemd`, great! nerdctl already provides [`containerd-rootless-setuptools.sh`](https://github.com/containerd/nerdctl/blob/master/extras/rootless/containerd-rootless-setuptool.sh) script that does the job for you. Just follow the instruction!
If you use `systemd`, great! nerdctl already provides [containerd-rootless-setuptools.sh](https://github.com/containerd/nerdctl/blob/master/extras/rootless/containerd-rootless-setuptool.sh) script that does the job for you. Just follow the instruction!
For other service managers, if yours support creating user services ([runit](https://docs.voidlinux.org/config/services/user-services.html) and [dinit](https://github.com/davmac314/dinit/blob/master/doc/getting_started.md) do), use it. Otherwise, just start `containerd_rootless.sh` inside `~/.profile` (or a similar file) or use your desktop environment's autostart mechanism.

View File

@ -84,6 +84,48 @@ Ordered?
3. No one cares
{ .ordered }
Todo list?
- [ ] 1st item
- [x] 2nd item (DONE)
- [ ] 3rd item (not yet)
### Shortcodes
{{< details text="This is a spoiler block" >}}
This shouldn't be shown at first.
{{< /details >}}
{{< spoiler >}}Spoiler text can also be inlined.{{< /spoiler >}}And {{< mark "important characters" >}} can be highlighted.
Font icons can be injected inside a \<span\> tag:
- [Font Awesome (brands/free)](https://origin.fontawesome.com/search?o=r&m=free) : {{< icon class="fa-brands fa-rust" >}}&#xe07a{{< /icon >}}, {{< icon class="fa-solid fa-paw" >}}&#xf1b0{{< /icon >}}
- [Devicon](https://github.com/devicons/devicon/blob/master/devicon-base.css): {{< icon class="devicon-ansible-plain" >}}&#xea4f{{< /icon >}}, {{< icon class="devicon-terraform-plain" >}}&#xea65{{< /icon >}}
- [Font Logos](https://github.com/lukas-w/font-logos/blob/master/README.md): {{< icon class="fl-alpine" >}}&#xf300{{< /icon >}}, {{< icon class="fl-almalinux" >}}&#xf31d{{< /icon >}}
Admonitions:
{{< admonition "note" >}}Take note of this paragraph{{< /admonition >}}
{{< admonition "warning" >}}
This is a test paragraph in a test post.
{{< /admonition >}}
{{< admonition "tip" >}}
Some tips and tricks.
{{< /admonition >}}
{{< admonition "important" >}}
This is a serious message.
{{< /admonition >}}
{{< admonition "caution" >}}
Avoid what is written here.
{{< /admonition >}}
Display tables with external data sources:
{{< table path="sample-table.csv" caption="sample-table.csv" header=true >}}
# Level 1
## Level 2
### Level 3

View File

@ -0,0 +1,3 @@
Name,Address
Joe,25th Oracle st.
Alan,69th Mandeva st.
1 Name Address
2 Joe 25th Oracle st.
3 Alan 69th Mandeva st.

43
hugo.toml Normal file
View File

@ -0,0 +1,43 @@
baseURL = "https://www.folliehiyuki.com"
languageCode = 'en-us'
title = "FollieHiyuki's blog"
hasCJKLanguage = true
enableEmoji = true
enableRobotsTXT = true
disablePathToLower = true
disableHugoGeneratorInject = true
disableKinds = ["taxonomy", "term"]
# rssLimit = 10
[menu]
nav = [
{ name = "Blog", url = "blog/", weight = 10 },
{ name = "About", url = "about/", weight = 20 },
]
[outputs]
section = ["HTML"]
[minify]
minifyOutput = true
[markup.goldmark.renderer]
hardWraps = true
unsafe = false
[markup.goldmark.parser.attribute]
block = true
[markup.tableOfContents]
startLevel = 2
endLevel = 4
ordered = false
[markup.highlight]
tabWidth = 2
noClasses = false
[privacy]
disqus.disable = true
googleAnalytics.disable = true
instagram.disable = true
twitter.disable = true
vimeo.disable = true
youtube.disable = true

View File

@ -0,0 +1,2 @@
{{ $isRemote := strings.HasPrefix .Destination "http" }}
<a href="{{ .Destination | safeURL }}"{{ with .Title }} title="{{ . }}"{{ end }}{{ if $isRemote }} target="_blank" rel="noopener external"{{ end }}>{{ .Text | safeHTML }}</a>

View File

@ -1,12 +1,13 @@
<footer class="Footer">
<div class="u-wrapper">
<div class="u-padding">
<span>Powered by <a href="https://gohugo.io/">Hugo</a></span>
<span><a href="https://gitlab.com/FollieHiyuki/site">Source code</a></span>
<span><a href="https://docs.folliehiyuki.com" target="_blank" rel="noopener external">Docs</a></span>
<span><a href="/index.xml">RSS feed</a></span>
<span><a href="https://gitlab.com/FollieHiyuki/site" target="_blank" rel="noopener external">Source code</a></span>
<span>
<a href="https://fediring.net/previous?host=www.folliehiyuki.com"><<</a>
<a href="https://fediring.net/">Fediring</a>
<a href="https://fediring.net/next?host=www.folliehiyuki.com">>></a>
<a href="https://fediring.net/previous?host=www.folliehiyuki.com" rel="noopener external"><<</a>
<a href="https://fediring.net/" target="_blank" rel="noopener external">Fediring</a>
<a href="https://fediring.net/next?host=www.folliehiyuki.com" rel="noopener external">>></a>
</span>
</div>
</div>

View File

@ -28,12 +28,15 @@
{{ printf "<link rel=%q type=%q href=%q title=%q />" .Rel .MediaType .Permalink site.Title | safeHTML }}
{{ end }}
{{ $main_css := resources.Get "css/main.tpl.scss" | resources.ExecuteAsTemplate "css/main.scss" . | resources.ToCSS | minify | fingerprint }}
<link rel="stylesheet" href="{{ $main_css.RelPermalink }}" integrity="{{ $main_css.Data.Integrity }}" crossorigin="anonymous" />
{{ $scss_options := dict "transpiler" "dartsass" }}
{{ with resources.Get "css/main.tpl.scss" | resources.ExecuteAsTemplate "css/main.scss" . | resources.ToCSS $scss_options | minify | fingerprint }}
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous" />
{{ end }}
{{ with .Params.css }}
{{ $page_css := resources.GetMatch (.) | minify | fingerprint }}
<link rel="stylesheet" href="{{ $page_css.RelPermalink }}" integrity="{{ $page_css.Data.Integrity }}" crossorigin="anonymous" />
{{ with resources.GetMatch (.) | minify | fingerprint }}
<link rel="stylesheet" href="{{ .RelPermalink }}" integrity="{{ .Data.Integrity }}" crossorigin="anonymous" />
{{ end }}
{{ end }}
{{/*

View File

@ -0,0 +1,3 @@
<div class="admonition admonition-{{ .Get 0 }}">
<p>{{ .Inner | markdownify | emojify }}</p>
</div>

View File

@ -0,0 +1,6 @@
{{- $id := printf "details-%d" .Ordinal -}}
<details class="details{{ with .Get "class" }} {{ . }}{{ end }}" id="{{ $id }}">
<summary>{{ .Get "text" | markdownify | emojify }}</summary>
<p>{{ .Inner | markdownify | emojify }}</p>
</details>

View File

@ -0,0 +1,22 @@
{{ $class := .Get "class" }}
{{ $is_awesome_free := eq (findRESubmatch `fa\-solid` $class | len) 1 }}
{{ $is_awesome_brands := eq (findRESubmatch `fa\-brands` $class | len) 1 }}
{{ $is_devicon := ge (findRESubmatch `devicon\-.+` $class | len) 1 }}
{{ $is_logos := ge (findRESubmatch `fl\-.+` $class | len) 1 }}
<span
class={{ $class }}
style="font-family:
{{ if $is_awesome_free }}
'Font Awesome 6 Free';
{{ else if $is_awesome_brands }}
'Font Awesome 6 Brands';
{{ else if $is_devicon }}
'devicon';
{{ else if $is_logos }}
'font-logos';
{{ end }}
{{ with .Get "style" }}{{ . }}{{ end }}">
{{ .Inner | safeHTML }}
</span>

View File

@ -0,0 +1,9 @@
{{/* https://developer.mozilla.org/en-US/docs/Web/HTML/Element/a */}}
<a href="{{ .Get "href" | safeURL }}"
{{ with .Get "referrer" }} referrerpolicy="{{ . }}"{{ end }}
{{ with .Get "rel" }} rel="{{ . }}"{{ end }}
{{ with .Get "target" }} target="{{ . }}"{{ end }}
{{ with .Get "title" }} title="{{ . }}"{{ end }}>
{{ .Inner | safeHTML }}
</a>

View File

@ -0,0 +1 @@
<mark>{{ with .Get 0 }}{{ . }}{{ end }}</mark>

View File

@ -0,0 +1,5 @@
{{- $id := printf "spoiler-%d" .Ordinal -}}
<span class="spoiler{{ with .Get "class" }} {{ . }}{{ end }}" id="{{ $id }}">
{{ .Inner | markdownify | emojify }}
</span>

View File

@ -0,0 +1,34 @@
{{/* Ref: https://github.com/wowchemy/wowchemy-hugo-themes/blob/main/modules/wowchemy/layouts/shortcodes/table.html */}}
{{ $src := .Get "path" }}
{{ $delimiter := .Get "delimiter" | default "," }}
{{ $useHeaderRow := (eq (.Get "header") true) | default false }}
{{ $caption := .Get "caption" }}
{{ $is_remote := strings.HasPrefix $src "http" }}
{{ if not $is_remote }}
{{ $src = path.Join "content" $.Page.File.Dir $src }}
{{ end }}
{{ $rows := getCSV $delimiter $src }}
<table class="table">
{{ if $useHeaderRow }}
{{ $headerRow := index $rows 0 }}
{{ $rows = after 1 $rows }}
<tr> {{ range $headerRow }} <th>{{ . | markdownify | emojify }}</th> {{ end }} </tr>
{{ end }}
{{ range $rows }}
<tr>
{{ range . }}
{{ if (findRE "^\\d+$" .) }}
<td data-table-dtype="number">{{ . }}</td>
{{ else }}
<td data-table-dtype="text">{{ . | markdownify | emojify }}</td>
{{ end }}
{{ end }}
</tr>
{{ end }}
{{ if $caption }}
<caption>{{ $caption | markdownify | emojify }}</caption>
{{ end }}
</table>

View File

@ -1,13 +0,0 @@
{
"name": "personal_blog",
"private": true,
"scripts": {
"build": "bazel build :public",
"preview": "bazel run :serve",
"upload": "bazel run :upload",
"lockfile": "bazel run -- @pnpm//:pnpm --dir $PWD install --lockfile-only"
},
"dependencies": {
"wrangler": "^3.1.0"
}
}

View File

@ -1,964 +0,0 @@
lockfileVersion: '6.1'
settings:
autoInstallPeers: true
excludeLinksFromLockfile: false
dependencies:
wrangler:
specifier: ^3.1.0
version: 3.1.0
packages:
/@cloudflare/kv-asset-handler@0.2.0:
resolution: {integrity: sha512-MVbXLbTcAotOPUj0pAMhVtJ+3/kFkwJqc5qNOleOZTv6QkZZABDMS21dSrSlVswEHwrpWC03e4fWytjqKvuE2A==}
dependencies:
mime: 3.0.0
dev: false
/@cloudflare/workerd-darwin-64@1.20230518.0:
resolution: {integrity: sha512-reApIf2/do6GjLlajU6LbRYh8gm/XcaRtzGbF8jo5IzyDSsdStmfNuvq7qssZXG92219Yp1kuTgR9+D1GGZGbg==}
engines: {node: '>=16'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@cloudflare/workerd-darwin-arm64@1.20230518.0:
resolution: {integrity: sha512-1l+xdbmPddqb2YIHd1YJ3YG/Fl1nhayzcxfL30xfNS89zJn9Xn3JomM0XMD4mk0d5GruBP3q8BQZ1Uo4rRLF3A==}
engines: {node: '>=16'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@cloudflare/workerd-linux-64@1.20230518.0:
resolution: {integrity: sha512-/pfR+YBpMOPr2cAlwjtInil0hRZjD8KX9LqK9JkfkEiaBH8CYhnJQcOdNHZI+3OjcY09JnQtEVC5xC4nbW7Bvw==}
engines: {node: '>=16'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@cloudflare/workerd-linux-arm64@1.20230518.0:
resolution: {integrity: sha512-q3HQvn3J4uEkE0cfDAGG8zqzSZrD47cavB/Tzv4mNutqwg6B4wL3ifjtGeB55tnP2K2KL0GVmX4tObcvpUF4BA==}
engines: {node: '>=16'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@cloudflare/workerd-windows-64@1.20230518.0:
resolution: {integrity: sha512-vNEHKS5gKKduNOBYtQjcBopAmFT1iScuPWMZa2nJboSjOB9I/5oiVsUpSyk5Y2ARyrohXNz0y8D7p87YzTASWw==}
engines: {node: '>=16'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@esbuild-plugins/node-globals-polyfill@0.1.1(esbuild@0.16.3):
resolution: {integrity: sha512-MR0oAA+mlnJWrt1RQVQ+4VYuRJW/P2YmRTv1AsplObyvuBMnPHiizUF95HHYiSsMGLhyGtWufaq2XQg6+iurBg==}
peerDependencies:
esbuild: '*'
dependencies:
esbuild: 0.16.3
dev: false
/@esbuild-plugins/node-modules-polyfill@0.1.4(esbuild@0.16.3):
resolution: {integrity: sha512-uZbcXi0zbmKC/050p3gJnne5Qdzw8vkXIv+c2BW0Lsc1ji1SkrxbKPUy5Efr0blbTu1SL8w4eyfpnSdPg3G0Qg==}
peerDependencies:
esbuild: '*'
dependencies:
esbuild: 0.16.3
escape-string-regexp: 4.0.0
rollup-plugin-node-polyfills: 0.2.1
dev: false
/@esbuild/android-arm64@0.16.3:
resolution: {integrity: sha512-RolFVeinkeraDvN/OoRf1F/lP0KUfGNb5jxy/vkIMeRRChkrX/HTYN6TYZosRJs3a1+8wqpxAo5PI5hFmxyPRg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [android]
requiresBuild: true
dev: false
optional: true
/@esbuild/android-arm@0.16.3:
resolution: {integrity: sha512-mueuEoh+s1eRbSJqq9KNBQwI4QhQV6sRXIfTyLXSHGMpyew61rOK4qY21uKbXl1iBoMb0AdL1deWFCQVlN2qHA==}
engines: {node: '>=12'}
cpu: [arm]
os: [android]
requiresBuild: true
dev: false
optional: true
/@esbuild/android-x64@0.16.3:
resolution: {integrity: sha512-SFpTUcIT1bIJuCCBMCQWq1bL2gPTjWoLZdjmIhjdcQHaUfV41OQfho6Ici5uvvkMmZRXIUGpM3GxysP/EU7ifQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [android]
requiresBuild: true
dev: false
optional: true
/@esbuild/darwin-arm64@0.16.3:
resolution: {integrity: sha512-DO8WykMyB+N9mIDfI/Hug70Dk1KipavlGAecxS3jDUwAbTpDXj0Lcwzw9svkhxfpCagDmpaTMgxWK8/C/XcXvw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@esbuild/darwin-x64@0.16.3:
resolution: {integrity: sha512-uEqZQ2omc6BvWqdCiyZ5+XmxuHEi1SPzpVxXCSSV2+Sh7sbXbpeNhHIeFrIpRjAs0lI1FmA1iIOxFozKBhKgRQ==}
engines: {node: '>=12'}
cpu: [x64]
os: [darwin]
requiresBuild: true
dev: false
optional: true
/@esbuild/freebsd-arm64@0.16.3:
resolution: {integrity: sha512-nJansp3sSXakNkOD5i5mIz2Is/HjzIhFs49b1tjrPrpCmwgBmH9SSzhC/Z1UqlkivqMYkhfPwMw1dGFUuwmXhw==}
engines: {node: '>=12'}
cpu: [arm64]
os: [freebsd]
requiresBuild: true
dev: false
optional: true
/@esbuild/freebsd-x64@0.16.3:
resolution: {integrity: sha512-TfoDzLw+QHfc4a8aKtGSQ96Wa+6eimljjkq9HKR0rHlU83vw8aldMOUSJTUDxbcUdcgnJzPaX8/vGWm7vyV7ug==}
engines: {node: '>=12'}
cpu: [x64]
os: [freebsd]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-arm64@0.16.3:
resolution: {integrity: sha512-7I3RlsnxEFCHVZNBLb2w7unamgZ5sVwO0/ikE2GaYvYuUQs9Qte/w7TqWcXHtCwxvZx/2+F97ndiUQAWs47ZfQ==}
engines: {node: '>=12'}
cpu: [arm64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-arm@0.16.3:
resolution: {integrity: sha512-VwswmSYwVAAq6LysV59Fyqk3UIjbhuc6wb3vEcJ7HEJUtFuLK9uXWuFoH1lulEbE4+5GjtHi3MHX+w1gNHdOWQ==}
engines: {node: '>=12'}
cpu: [arm]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-ia32@0.16.3:
resolution: {integrity: sha512-X8FDDxM9cqda2rJE+iblQhIMYY49LfvW4kaEjoFbTTQ4Go8G96Smj2w3BRTwA8IHGoi9dPOPGAX63dhuv19UqA==}
engines: {node: '>=12'}
cpu: [ia32]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-loong64@0.16.3:
resolution: {integrity: sha512-hIbeejCOyO0X9ujfIIOKjBjNAs9XD/YdJ9JXAy1lHA+8UXuOqbFe4ErMCqMr8dhlMGBuvcQYGF7+kO7waj2KHw==}
engines: {node: '>=12'}
cpu: [loong64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-mips64el@0.16.3:
resolution: {integrity: sha512-znFRzICT/V8VZQMt6rjb21MtAVJv/3dmKRMlohlShrbVXdBuOdDrGb+C2cZGQAR8RFyRe7HS6klmHq103WpmVw==}
engines: {node: '>=12'}
cpu: [mips64el]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-ppc64@0.16.3:
resolution: {integrity: sha512-EV7LuEybxhXrVTDpbqWF2yehYRNz5e5p+u3oQUS2+ZFpknyi1NXxr8URk4ykR8Efm7iu04//4sBg249yNOwy5Q==}
engines: {node: '>=12'}
cpu: [ppc64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-riscv64@0.16.3:
resolution: {integrity: sha512-uDxqFOcLzFIJ+r/pkTTSE9lsCEaV/Y6rMlQjUI9BkzASEChYL/aSQjZjchtEmdnVxDKETnUAmsaZ4pqK1eE5BQ==}
engines: {node: '>=12'}
cpu: [riscv64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-s390x@0.16.3:
resolution: {integrity: sha512-NbeREhzSxYwFhnCAQOQZmajsPYtX71Ufej3IQ8W2Gxskfz9DK58ENEju4SbpIj48VenktRASC52N5Fhyf/aliQ==}
engines: {node: '>=12'}
cpu: [s390x]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/linux-x64@0.16.3:
resolution: {integrity: sha512-SDiG0nCixYO9JgpehoKgScwic7vXXndfasjnD5DLbp1xltANzqZ425l7LSdHynt19UWOcDjG9wJJzSElsPvk0w==}
engines: {node: '>=12'}
cpu: [x64]
os: [linux]
requiresBuild: true
dev: false
optional: true
/@esbuild/netbsd-x64@0.16.3:
resolution: {integrity: sha512-AzbsJqiHEq1I/tUvOfAzCY15h4/7Ivp3ff/o1GpP16n48JMNAtbW0qui2WCgoIZArEHD0SUQ95gvR0oSO7ZbdA==}
engines: {node: '>=12'}
cpu: [x64]
os: [netbsd]
requiresBuild: true
dev: false
optional: true
/@esbuild/openbsd-x64@0.16.3:
resolution: {integrity: sha512-gSABi8qHl8k3Cbi/4toAzHiykuBuWLZs43JomTcXkjMZVkp0gj3gg9mO+9HJW/8GB5H89RX/V0QP4JGL7YEEVg==}
engines: {node: '>=12'}
cpu: [x64]
os: [openbsd]
requiresBuild: true
dev: false
optional: true
/@esbuild/sunos-x64@0.16.3:
resolution: {integrity: sha512-SF9Kch5Ete4reovvRO6yNjMxrvlfT0F0Flm+NPoUw5Z4Q3r1d23LFTgaLwm3Cp0iGbrU/MoUI+ZqwCv5XJijCw==}
engines: {node: '>=12'}
cpu: [x64]
os: [sunos]
requiresBuild: true
dev: false
optional: true
/@esbuild/win32-arm64@0.16.3:
resolution: {integrity: sha512-u5aBonZIyGopAZyOnoPAA6fGsDeHByZ9CnEzyML9NqntK6D/xl5jteZUKm/p6nD09+v3pTM6TuUIqSPcChk5gg==}
engines: {node: '>=12'}
cpu: [arm64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@esbuild/win32-ia32@0.16.3:
resolution: {integrity: sha512-GlgVq1WpvOEhNioh74TKelwla9KDuAaLZrdxuuUgsP2vayxeLgVc+rbpIv0IYF4+tlIzq2vRhofV+KGLD+37EQ==}
engines: {node: '>=12'}
cpu: [ia32]
os: [win32]
requiresBuild: true
dev: false
optional: true
/@esbuild/win32-x64@0.16.3:
resolution: {integrity: sha512-5/JuTd8OWW8UzEtyf19fbrtMJENza+C9JoPIkvItgTBQ1FO2ZLvjbPO6Xs54vk0s5JB5QsfieUEshRQfu7ZHow==}
engines: {node: '>=12'}
cpu: [x64]
os: [win32]
requiresBuild: true
dev: false
optional: true
/acorn-walk@8.2.0:
resolution: {integrity: sha512-k+iyHEuPgSw6SbuDpGQM+06HQUa04DZ3o+F6CSzXMvvI5KMvnaEqXe+YVe555R9nn6GPt404fos4wcgpw12SDA==}
engines: {node: '>=0.4.0'}
dev: false
/acorn@8.8.2:
resolution: {integrity: sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw==}
engines: {node: '>=0.4.0'}
hasBin: true
dev: false
/anymatch@3.1.3:
resolution: {integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==}
engines: {node: '>= 8'}
dependencies:
normalize-path: 3.0.0
picomatch: 2.3.1
dev: false
/as-table@1.0.55:
resolution: {integrity: sha512-xvsWESUJn0JN421Xb9MQw6AsMHRCUknCe0Wjlxvjud80mU4E6hQf1A6NzQKcYNmYw62MfzEtXc+badstZP3JpQ==}
dependencies:
printable-characters: 1.0.42
dev: false
/base64-js@1.5.1:
resolution: {integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==}
dev: false
/better-sqlite3@8.4.0:
resolution: {integrity: sha512-NmsNW1CQvqMszu/CFAJ3pLct6NEFlNfuGM6vw72KHkjOD1UDnL96XNN1BMQc1hiHo8vE2GbOWQYIpZ+YM5wrZw==}
requiresBuild: true
dependencies:
bindings: 1.5.0
prebuild-install: 7.1.1
dev: false
/binary-extensions@2.2.0:
resolution: {integrity: sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==}
engines: {node: '>=8'}
dev: false
/bindings@1.5.0:
resolution: {integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==}
dependencies:
file-uri-to-path: 1.0.0
dev: false
/bl@4.1.0:
resolution: {integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==}
dependencies:
buffer: 5.7.1
inherits: 2.0.4
readable-stream: 3.6.2
dev: false
/blake3-wasm@2.1.5:
resolution: {integrity: sha512-F1+K8EbfOZE49dtoPtmxUQrpXaBIl3ICvasLh+nJta0xkz+9kF/7uet9fLnwKqhDrmj6g+6K3Tw9yQPUg2ka5g==}
dev: false
/braces@3.0.2:
resolution: {integrity: sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==}
engines: {node: '>=8'}
dependencies:
fill-range: 7.0.1
dev: false
/buffer-from@1.1.2:
resolution: {integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==}
dev: false
/buffer@5.7.1:
resolution: {integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==}
dependencies:
base64-js: 1.5.1
ieee754: 1.2.1
dev: false
/busboy@1.6.0:
resolution: {integrity: sha512-8SFQbg/0hQ9xy3UNTB0YEnsNBbWfhf7RtnzpL7TkBiTBRfrQ9Fxcnz7VJsleJpyp6rVLvXiuORqjlHi5q+PYuA==}
engines: {node: '>=10.16.0'}
dependencies:
streamsearch: 1.1.0
dev: false
/capnp-ts@0.7.0:
resolution: {integrity: sha512-XKxXAC3HVPv7r674zP0VC3RTXz+/JKhfyw94ljvF80yynK6VkTnqE3jMuN8b3dUVmmc43TjyxjW4KTsmB3c86g==}
dependencies:
debug: 4.3.4
tslib: 2.5.3
transitivePeerDependencies:
- supports-color
dev: false
/chokidar@3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'}
dependencies:
anymatch: 3.1.3
braces: 3.0.2
glob-parent: 5.1.2
is-binary-path: 2.1.0
is-glob: 4.0.3
normalize-path: 3.0.0
readdirp: 3.6.0
optionalDependencies:
fsevents: 2.3.2
dev: false
/chownr@1.1.4:
resolution: {integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==}
dev: false
/cookie@0.5.0:
resolution: {integrity: sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==}
engines: {node: '>= 0.6'}
dev: false
/data-uri-to-buffer@2.0.2:
resolution: {integrity: sha512-ND9qDTLc6diwj+Xe5cdAgVTbLVdXbtxTJRXRhli8Mowuaan+0EJOtdqJ0QCHNSSPyoXGx9HX2/VMnKeC34AChA==}
dev: false
/debug@4.3.4:
resolution: {integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==}
engines: {node: '>=6.0'}
peerDependencies:
supports-color: '*'
peerDependenciesMeta:
supports-color:
optional: true
dependencies:
ms: 2.1.2
dev: false
/decompress-response@6.0.0:
resolution: {integrity: sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==}
engines: {node: '>=10'}
dependencies:
mimic-response: 3.1.0
dev: false
/deep-extend@0.6.0:
resolution: {integrity: sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA==}
engines: {node: '>=4.0.0'}
dev: false
/detect-libc@2.0.1:
resolution: {integrity: sha512-463v3ZeIrcWtdgIg6vI6XUncguvr2TnGl4SzDXinkt9mSLpBJKXT3mW6xT3VQdDN11+WVs29pgvivTc4Lp8v+w==}
engines: {node: '>=8'}
dev: false
/end-of-stream@1.4.4:
resolution: {integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==}
dependencies:
once: 1.4.0
dev: false
/esbuild@0.16.3:
resolution: {integrity: sha512-71f7EjPWTiSguen8X/kxEpkAS7BFHwtQKisCDDV3Y4GLGWBaoSCyD5uXkaUew6JDzA9FEN1W23mdnSwW9kqCeg==}
engines: {node: '>=12'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@esbuild/android-arm': 0.16.3
'@esbuild/android-arm64': 0.16.3
'@esbuild/android-x64': 0.16.3
'@esbuild/darwin-arm64': 0.16.3
'@esbuild/darwin-x64': 0.16.3
'@esbuild/freebsd-arm64': 0.16.3
'@esbuild/freebsd-x64': 0.16.3
'@esbuild/linux-arm': 0.16.3
'@esbuild/linux-arm64': 0.16.3
'@esbuild/linux-ia32': 0.16.3
'@esbuild/linux-loong64': 0.16.3
'@esbuild/linux-mips64el': 0.16.3
'@esbuild/linux-ppc64': 0.16.3
'@esbuild/linux-riscv64': 0.16.3
'@esbuild/linux-s390x': 0.16.3
'@esbuild/linux-x64': 0.16.3
'@esbuild/netbsd-x64': 0.16.3
'@esbuild/openbsd-x64': 0.16.3
'@esbuild/sunos-x64': 0.16.3
'@esbuild/win32-arm64': 0.16.3
'@esbuild/win32-ia32': 0.16.3
'@esbuild/win32-x64': 0.16.3
dev: false
/escape-string-regexp@4.0.0:
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
engines: {node: '>=10'}
dev: false
/estree-walker@0.6.1:
resolution: {integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==}
dev: false
/exit-hook@2.2.1:
resolution: {integrity: sha512-eNTPlAD67BmP31LDINZ3U7HSF8l57TxOY2PmBJ1shpCvpnxBF93mWCE8YHBnXs8qiUZJc9WDcWIeC3a2HIAMfw==}
engines: {node: '>=6'}
dev: false
/expand-template@2.0.3:
resolution: {integrity: sha512-XYfuKMvj4O35f/pOXLObndIRvyQ+/+6AhODh+OKWj9S9498pHHn/IMszH+gt0fBCRWMNfk1ZSp5x3AifmnI2vg==}
engines: {node: '>=6'}
dev: false
/file-uri-to-path@1.0.0:
resolution: {integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==}
dev: false
/fill-range@7.0.1:
resolution: {integrity: sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==}
engines: {node: '>=8'}
dependencies:
to-regex-range: 5.0.1
dev: false
/fs-constants@1.0.0:
resolution: {integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==}
dev: false
/fsevents@2.3.2:
resolution: {integrity: sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==}
engines: {node: ^8.16.0 || ^10.6.0 || >=11.0.0}
os: [darwin]
requiresBuild: true
dev: false
optional: true
/get-source@2.0.12:
resolution: {integrity: sha512-X5+4+iD+HoSeEED+uwrQ07BOQr0kEDFMVqqpBuI+RaZBpBpHCuXxo70bjar6f0b0u/DQJsJ7ssurpP0V60Az+w==}
dependencies:
data-uri-to-buffer: 2.0.2
source-map: 0.6.1
dev: false
/github-from-package@0.0.0:
resolution: {integrity: sha512-SyHy3T1v2NUXn29OsWdxmK6RwHD+vkj3v8en8AOBZ1wBQ/hCAQ5bAQTD02kW4W9tUp/3Qh6J8r9EvntiyCmOOw==}
dev: false
/glob-parent@5.1.2:
resolution: {integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==}
engines: {node: '>= 6'}
dependencies:
is-glob: 4.0.3
dev: false
/glob-to-regexp@0.4.1:
resolution: {integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==}
dev: false
/http-cache-semantics@4.1.1:
resolution: {integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==}
dev: false
/ieee754@1.2.1:
resolution: {integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==}
dev: false
/inherits@2.0.4:
resolution: {integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==}
dev: false
/ini@1.3.8:
resolution: {integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==}
dev: false
/is-binary-path@2.1.0:
resolution: {integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==}
engines: {node: '>=8'}
dependencies:
binary-extensions: 2.2.0
dev: false
/is-extglob@2.1.1:
resolution: {integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==}
engines: {node: '>=0.10.0'}
dev: false
/is-glob@4.0.3:
resolution: {integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==}
engines: {node: '>=0.10.0'}
dependencies:
is-extglob: 2.1.1
dev: false
/is-number@7.0.0:
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
engines: {node: '>=0.12.0'}
dev: false
/kleur@4.1.5:
resolution: {integrity: sha512-o+NO+8WrRiQEE4/7nwRJhN1HWpVmJm511pBHUxPLtp0BUISzlBplORYSmTclCnJvQq2tKu/sgl3xVpkc7ZWuQQ==}
engines: {node: '>=6'}
dev: false
/lru-cache@6.0.0:
resolution: {integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==}
engines: {node: '>=10'}
dependencies:
yallist: 4.0.0
dev: false
/magic-string@0.25.9:
resolution: {integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==}
dependencies:
sourcemap-codec: 1.4.8
dev: false
/mime@3.0.0:
resolution: {integrity: sha512-jSCU7/VB1loIWBZe14aEYHU/+1UMEHoaO7qxCOVJOw9GgH72VAWppxNcjU+x9a2k3GSIBXNKxXQFqRvvZ7vr3A==}
engines: {node: '>=10.0.0'}
hasBin: true
dev: false
/mimic-response@3.1.0:
resolution: {integrity: sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==}
engines: {node: '>=10'}
dev: false
/miniflare@3.0.1:
resolution: {integrity: sha512-aLOB8d26lOTn493GOv1LmpGHVLSxmeT4MixPG/k3Ze10j0wDKnMj8wsFgbZ6Q4cr1N4faf8O3IbNRJuQ+rLoJA==}
engines: {node: '>=16.13'}
dependencies:
acorn: 8.8.2
acorn-walk: 8.2.0
better-sqlite3: 8.4.0
capnp-ts: 0.7.0
exit-hook: 2.2.1
glob-to-regexp: 0.4.1
http-cache-semantics: 4.1.1
kleur: 4.1.5
source-map-support: 0.5.21
stoppable: 1.1.0
undici: 5.20.0
workerd: 1.20230518.0
ws: 8.13.0
youch: 3.2.3
zod: 3.21.4
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
dev: false
/minimist@1.2.8:
resolution: {integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==}
dev: false
/mkdirp-classic@0.5.3:
resolution: {integrity: sha512-gKLcREMhtuZRwRAfqP3RFW+TK4JqApVBtOIftVgjuABpAtpxhPGaDcfvbhNvD0B8iD1oUr/txX35NjcaY6Ns/A==}
dev: false
/ms@2.1.2:
resolution: {integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==}
dev: false
/mustache@4.2.0:
resolution: {integrity: sha512-71ippSywq5Yb7/tVYyGbkBggbU8H3u5Rz56fH60jGFgr8uHwxs+aSKeqmluIVzM0m0kB7xQjKS6qPfd0b2ZoqQ==}
hasBin: true
dev: false
/nanoid@3.3.6:
resolution: {integrity: sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==}
engines: {node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1}
hasBin: true
dev: false
/napi-build-utils@1.0.2:
resolution: {integrity: sha512-ONmRUqK7zj7DWX0D9ADe03wbwOBZxNAfF20PlGfCWQcD3+/MakShIHrMqx9YwPTfxDdF1zLeL+RGZiR9kGMLdg==}
dev: false
/node-abi@3.44.0:
resolution: {integrity: sha512-MYjZTiAETGG28/7fBH1RjuY7vzDwYC5q5U4whCgM4jNEQcC0gAvN339LxXukmL2T2tGpzYTfp+LZ5RN7E5DwEg==}
engines: {node: '>=10'}
dependencies:
semver: 7.5.0
dev: false
/node-forge@1.3.1:
resolution: {integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==}
engines: {node: '>= 6.13.0'}
dev: false
/normalize-path@3.0.0:
resolution: {integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==}
engines: {node: '>=0.10.0'}
dev: false
/once@1.4.0:
resolution: {integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==}
dependencies:
wrappy: 1.0.2
dev: false
/path-to-regexp@6.2.1:
resolution: {integrity: sha512-JLyh7xT1kizaEvcaXOQwOc2/Yhw6KZOvPf1S8401UyLk86CU79LN3vl7ztXGm/pZ+YjoyAJ4rxmHwbkBXJX+yw==}
dev: false
/picomatch@2.3.1:
resolution: {integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==}
engines: {node: '>=8.6'}
dev: false
/prebuild-install@7.1.1:
resolution: {integrity: sha512-jAXscXWMcCK8GgCoHOfIr0ODh5ai8mj63L2nWrjuAgXE6tDyYGnx4/8o/rCgU+B4JSyZBKbeZqzhtwtC3ovxjw==}
engines: {node: '>=10'}
hasBin: true
dependencies:
detect-libc: 2.0.1
expand-template: 2.0.3
github-from-package: 0.0.0
minimist: 1.2.8
mkdirp-classic: 0.5.3
napi-build-utils: 1.0.2
node-abi: 3.44.0
pump: 3.0.0
rc: 1.2.8
simple-get: 4.0.1
tar-fs: 2.1.1
tunnel-agent: 0.6.0
dev: false
/printable-characters@1.0.42:
resolution: {integrity: sha512-dKp+C4iXWK4vVYZmYSd0KBH5F/h1HoZRsbJ82AVKRO3PEo8L4lBS/vLwhVtpwwuYcoIsVY+1JYKR268yn480uQ==}
dev: false
/pump@3.0.0:
resolution: {integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==}
dependencies:
end-of-stream: 1.4.4
once: 1.4.0
dev: false
/rc@1.2.8:
resolution: {integrity: sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==}
hasBin: true
dependencies:
deep-extend: 0.6.0
ini: 1.3.8
minimist: 1.2.8
strip-json-comments: 2.0.1
dev: false
/readable-stream@3.6.2:
resolution: {integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==}
engines: {node: '>= 6'}
dependencies:
inherits: 2.0.4
string_decoder: 1.3.0
util-deprecate: 1.0.2
dev: false
/readdirp@3.6.0:
resolution: {integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==}
engines: {node: '>=8.10.0'}
dependencies:
picomatch: 2.3.1
dev: false
/rollup-plugin-inject@3.0.2:
resolution: {integrity: sha512-ptg9PQwzs3orn4jkgXJ74bfs5vYz1NCZlSQMBUA0wKcGp5i5pA1AO3fOUEte8enhGUC+iapTCzEWw2jEFFUO/w==}
deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-inject.
dependencies:
estree-walker: 0.6.1
magic-string: 0.25.9
rollup-pluginutils: 2.8.2
dev: false
/rollup-plugin-node-polyfills@0.2.1:
resolution: {integrity: sha512-4kCrKPTJ6sK4/gLL/U5QzVT8cxJcofO0OU74tnB19F40cmuAKSzH5/siithxlofFEjwvw1YAhPmbvGNA6jEroA==}
dependencies:
rollup-plugin-inject: 3.0.2
dev: false
/rollup-pluginutils@2.8.2:
resolution: {integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==}
dependencies:
estree-walker: 0.6.1
dev: false
/safe-buffer@5.2.1:
resolution: {integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==}
dev: false
/selfsigned@2.1.1:
resolution: {integrity: sha512-GSL3aowiF7wa/WtSFwnUrludWFoNhftq8bUkH9pkzjpN2XSPOAYEgg6e0sS9s0rZwgJzJiQRPU18A6clnoW5wQ==}
engines: {node: '>=10'}
dependencies:
node-forge: 1.3.1
dev: false
/semver@7.5.0:
resolution: {integrity: sha512-+XC0AD/R7Q2mPSRuy2Id0+CGTZ98+8f+KvwirxOKIEyid+XSx6HbC63p+O4IndTHuX5Z+JxQ0TghCkO5Cg/2HA==}
engines: {node: '>=10'}
hasBin: true
dependencies:
lru-cache: 6.0.0
dev: false
/simple-concat@1.0.1:
resolution: {integrity: sha512-cSFtAPtRhljv69IK0hTVZQ+OfE9nePi/rtJmw5UjHeVyVroEqJXP1sFztKUy1qU+xvz3u/sfYJLa947b7nAN2Q==}
dev: false
/simple-get@4.0.1:
resolution: {integrity: sha512-brv7p5WgH0jmQJr1ZDDfKDOSeWWg+OVypG99A/5vYGPqJ6pxiaHLy8nxtFjBA7oMa01ebA9gfh1uMCFqOuXxvA==}
dependencies:
decompress-response: 6.0.0
once: 1.4.0
simple-concat: 1.0.1
dev: false
/source-map-support@0.5.21:
resolution: {integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==}
dependencies:
buffer-from: 1.1.2
source-map: 0.6.1
dev: false
/source-map@0.6.1:
resolution: {integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==}
engines: {node: '>=0.10.0'}
dev: false
/source-map@0.7.4:
resolution: {integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==}
engines: {node: '>= 8'}
dev: false
/sourcemap-codec@1.4.8:
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
deprecated: Please use @jridgewell/sourcemap-codec instead
dev: false
/stacktracey@2.1.8:
resolution: {integrity: sha512-Kpij9riA+UNg7TnphqjH7/CzctQ/owJGNbFkfEeve4Z4uxT5+JapVLFXcsurIfN34gnTWZNJ/f7NMG0E8JDzTw==}
dependencies:
as-table: 1.0.55
get-source: 2.0.12
dev: false
/stoppable@1.1.0:
resolution: {integrity: sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==}
engines: {node: '>=4', npm: '>=6'}
dev: false
/streamsearch@1.1.0:
resolution: {integrity: sha512-Mcc5wHehp9aXz1ax6bZUyY5afg9u2rv5cqQI3mRrYkGC8rW2hM02jWuwjtL++LS5qinSyhj2QfLyNsuc+VsExg==}
engines: {node: '>=10.0.0'}
dev: false
/string_decoder@1.3.0:
resolution: {integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==}
dependencies:
safe-buffer: 5.2.1
dev: false
/strip-json-comments@2.0.1:
resolution: {integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==}
engines: {node: '>=0.10.0'}
dev: false
/tar-fs@2.1.1:
resolution: {integrity: sha512-V0r2Y9scmbDRLCNex/+hYzvp/zyYjvFbHPNgVTKfQvVrb6guiE/fxP+XblDNR011utopbkex2nM4dHNV6GDsng==}
dependencies:
chownr: 1.1.4
mkdirp-classic: 0.5.3
pump: 3.0.0
tar-stream: 2.2.0
dev: false
/tar-stream@2.2.0:
resolution: {integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==}
engines: {node: '>=6'}
dependencies:
bl: 4.1.0
end-of-stream: 1.4.4
fs-constants: 1.0.0
inherits: 2.0.4
readable-stream: 3.6.2
dev: false
/to-regex-range@5.0.1:
resolution: {integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==}
engines: {node: '>=8.0'}
dependencies:
is-number: 7.0.0
dev: false
/tslib@2.5.3:
resolution: {integrity: sha512-mSxlJJwl3BMEQCUNnxXBU9jP4JBktcEGhURcPR6VQVlnP0FdDEsIaz0C35dXNGLyRfrATNofF0F5p2KPxQgB+w==}
dev: false
/tunnel-agent@0.6.0:
resolution: {integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==}
dependencies:
safe-buffer: 5.2.1
dev: false
/undici@5.20.0:
resolution: {integrity: sha512-J3j60dYzuo6Eevbawwp1sdg16k5Tf768bxYK4TUJRH7cBM4kFCbf3mOnM/0E3vQYXvpxITbbWmBafaDbxLDz3g==}
engines: {node: '>=12.18'}
dependencies:
busboy: 1.6.0
dev: false
/util-deprecate@1.0.2:
resolution: {integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==}
dev: false
/workerd@1.20230518.0:
resolution: {integrity: sha512-VNmK0zoNZXrwEEx77O/oQDVUzzyDjf5kKKK8bty+FmKCd5EQJCpqi8NlRKWLGMyyYrKm86MFz0kAsreTEs7HHA==}
engines: {node: '>=16'}
hasBin: true
requiresBuild: true
optionalDependencies:
'@cloudflare/workerd-darwin-64': 1.20230518.0
'@cloudflare/workerd-darwin-arm64': 1.20230518.0
'@cloudflare/workerd-linux-64': 1.20230518.0
'@cloudflare/workerd-linux-arm64': 1.20230518.0
'@cloudflare/workerd-windows-64': 1.20230518.0
dev: false
/wrangler@3.1.0:
resolution: {integrity: sha512-oqVBJZoOQqSKxhgaPt4LcmtBf0FssIz/4F1VgjWOomeGQ3kN9pg3swPO0Zkf0aAphDodG9rekjrtccvKW7bSsA==}
engines: {node: '>=16.13.0'}
hasBin: true
dependencies:
'@cloudflare/kv-asset-handler': 0.2.0
'@esbuild-plugins/node-globals-polyfill': 0.1.1(esbuild@0.16.3)
'@esbuild-plugins/node-modules-polyfill': 0.1.4(esbuild@0.16.3)
blake3-wasm: 2.1.5
chokidar: 3.5.3
esbuild: 0.16.3
miniflare: 3.0.1
nanoid: 3.3.6
path-to-regexp: 6.2.1
selfsigned: 2.1.1
source-map: 0.7.4
xxhash-wasm: 1.0.2
optionalDependencies:
fsevents: 2.3.2
transitivePeerDependencies:
- bufferutil
- supports-color
- utf-8-validate
dev: false
/wrappy@1.0.2:
resolution: {integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==}
dev: false
/ws@8.13.0:
resolution: {integrity: sha512-x9vcZYTrFPC7aSIbj7sRCYo7L/Xb8Iy+pW0ng0wt2vCJv7M9HOMy0UoN3rr+IFC7hb7vXoqS+P9ktyLLLhO+LA==}
engines: {node: '>=10.0.0'}
peerDependencies:
bufferutil: ^4.0.1
utf-8-validate: '>=5.0.2'
peerDependenciesMeta:
bufferutil:
optional: true
utf-8-validate:
optional: true
dev: false
/xxhash-wasm@1.0.2:
resolution: {integrity: sha512-ibF0Or+FivM9lNrg+HGJfVX8WJqgo+kCLDc4vx6xMeTce7Aj+DLttKbxxRR/gNLSAelRc1omAPlJ77N/Jem07A==}
dev: false
/yallist@4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: false
/youch@3.2.3:
resolution: {integrity: sha512-ZBcWz/uzZaQVdCvfV4uk616Bbpf2ee+F/AvuKDR5EwX/Y4v06xWdtMluqTD7+KlZdM93lLm9gMZYo0sKBS0pgw==}
dependencies:
cookie: 0.5.0
mustache: 4.2.0
stacktracey: 2.1.8
dev: false
/zod@3.21.4:
resolution: {integrity: sha512-m46AKbrzKVzOzs/DZgVnG5H55N1sv1M8qZU3A8RIKbs3mrACDNeIOeilDymVb2HdmP8uwshOCF4uJ8uM9rCqJw==}
dev: false