diff --git a/.gitignore b/.gitignore
index e794ff17..69d95434 100644
--- a/.gitignore
+++ b/.gitignore
@@ -2,3 +2,4 @@
node_modules
_site
.envrc
+.direnv
diff --git a/_includes/blogpost.liquid b/_includes/blogpost.liquid
index ce498e22..0fc2b628 100644
--- a/_includes/blogpost.liquid
+++ b/_includes/blogpost.liquid
@@ -38,12 +38,11 @@
href="https://fonts.googleapis.com/css?family=Noto+Serif+KR:500,600,700"
rel="stylesheet"
/>
-
-
-
+
+
diff --git a/_includes/homepage.liquid b/_includes/homepage.liquid
index 2ca491b3..afa119a4 100644
--- a/_includes/homepage.liquid
+++ b/_includes/homepage.liquid
@@ -38,11 +38,10 @@
href="https://fonts.googleapis.com/css?family=Noto+Serif+KR:500,600,700"
rel="stylesheet"
/>
-
-
-
+
+
diff --git a/package-lock.json b/package-lock.json
index a1491bd6..4492b7e8 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -14,12 +14,15 @@
"@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0",
"concurrently": "^7.0.0",
"eleventy-plugin-youtube-embed": "^1.10.2",
+ "lightningcss": "^1.25.1",
+ "lightningcss-cli": "^1.25.1",
"markdown-it-footnote": "^3.0.2",
"remark-cli": "^9.0.0",
"remark-frontmatter": "^3.0.0",
"remark-lint": "^8.0.0",
"remark-preset-lint-consistent": "^4.0.0",
- "sass": "^1.45.0",
+ "typescript": "^5.5.4",
+ "typescript-language-server": "^4.3.3",
"xmlhttprequest-ssl": ">=1.6.1"
}
},
@@ -579,12 +582,12 @@
}
},
"node_modules/braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"dependencies": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
},
"engines": {
"node": ">=8"
@@ -917,6 +920,18 @@
"node": ">= 0.6.0"
}
},
+ "node_modules/detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true,
+ "bin": {
+ "detect-libc": "bin/detect-libc.js"
+ },
+ "engines": {
+ "node": ">=0.10"
+ }
+ },
"node_modules/dev-ip": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz",
@@ -1060,9 +1075,9 @@
}
},
"node_modules/escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"dev": true,
"engines": {
"node": ">=6"
@@ -1185,9 +1200,9 @@
}
},
"node_modules/fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"dependencies": {
"to-regex-range": "^5.0.1"
@@ -1393,9 +1408,9 @@
}
},
"node_modules/ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"dev": true,
"engines": {
"node": ">= 4"
@@ -1589,13 +1604,10 @@
"dev": true
},
"node_modules/json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
"dev": true,
- "dependencies": {
- "minimist": "^1.2.5"
- },
"bin": {
"json5": "lib/cli.js"
},
@@ -1662,6 +1674,424 @@
"node": ">=6"
}
},
+ "node_modules/lightningcss": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.25.1.tgz",
+ "integrity": "sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==",
+ "dev": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-darwin-arm64": "1.25.1",
+ "lightningcss-darwin-x64": "1.25.1",
+ "lightningcss-freebsd-x64": "1.25.1",
+ "lightningcss-linux-arm-gnueabihf": "1.25.1",
+ "lightningcss-linux-arm64-gnu": "1.25.1",
+ "lightningcss-linux-arm64-musl": "1.25.1",
+ "lightningcss-linux-x64-gnu": "1.25.1",
+ "lightningcss-linux-x64-musl": "1.25.1",
+ "lightningcss-win32-x64-msvc": "1.25.1"
+ }
+ },
+ "node_modules/lightningcss-cli": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli/-/lightningcss-cli-1.25.1.tgz",
+ "integrity": "sha512-rrAgDqDIcG3bPHG7a77jxqvLIXkm3nvMIFbfeD6GPjlIs+EtTMdKMKDR917RE5MGdLseRKf+3yu+1nsroMZHnQ==",
+ "dev": true,
+ "hasInstallScript": true,
+ "dependencies": {
+ "detect-libc": "^1.0.3"
+ },
+ "bin": {
+ "lightningcss": "lightningcss"
+ },
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ },
+ "optionalDependencies": {
+ "lightningcss-cli-darwin-arm64": "1.25.1",
+ "lightningcss-cli-darwin-x64": "1.25.1",
+ "lightningcss-cli-freebsd-x64": "1.25.1",
+ "lightningcss-cli-linux-arm-gnueabihf": "1.25.1",
+ "lightningcss-cli-linux-arm64-gnu": "1.25.1",
+ "lightningcss-cli-linux-arm64-musl": "1.25.1",
+ "lightningcss-cli-linux-x64-gnu": "1.25.1",
+ "lightningcss-cli-linux-x64-musl": "1.25.1",
+ "lightningcss-cli-win32-x64-msvc": "1.25.1"
+ }
+ },
+ "node_modules/lightningcss-cli-darwin-arm64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-darwin-arm64/-/lightningcss-cli-darwin-arm64-1.25.1.tgz",
+ "integrity": "sha512-T+8n8AtfRnNxI97dKLT3+FpYDyioH0KLkoAjBxnUZVdyScmgqsBGtqXsdObLxyiNpLCJUfrL4oSQbMI1Fq5KVw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-darwin-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-darwin-x64/-/lightningcss-cli-darwin-x64-1.25.1.tgz",
+ "integrity": "sha512-x0N9I4f4NXUesFQa03EmOb3kIg/4TPAGPNY/UZDMAEhGA8bDTOgesvMdQqD4dss1ADsbWA5kIMeUyPKS8A12SQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-freebsd-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-freebsd-x64/-/lightningcss-cli-freebsd-x64-1.25.1.tgz",
+ "integrity": "sha512-uzEwexbRy/GkaPhW1GbTgXB6CKQhR7abVcp1uuMP1G9yICy8o6bCC941xCPtICDW6VfimPrAe9a9xt6UJwKI1A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-linux-arm-gnueabihf": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm-gnueabihf/-/lightningcss-cli-linux-arm-gnueabihf-1.25.1.tgz",
+ "integrity": "sha512-Wgu0WoEPgGzdB4pSmfsiTnyQf2/nzz794R9YMa0tOReW/JP75pvTdv6vjUGvo0L9sasMKEehWAKoWi8s86YuMg==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-linux-arm64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm64-gnu/-/lightningcss-cli-linux-arm64-gnu-1.25.1.tgz",
+ "integrity": "sha512-nwCPUmsbjtJaKfaqGc2Cbsc1An1e40wgWa1sWrIL6pjLGlCGAym37jbe54h9U9UuAjQAik14lRZ45n9jJgeojg==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-linux-arm64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm64-musl/-/lightningcss-cli-linux-arm64-musl-1.25.1.tgz",
+ "integrity": "sha512-Fj/XW+ahY5VXIWGjf4/GCMxVDn5W+qJKaa0V35qmjGmdGSeR/utCq7f4qDxzzPTgrAlQ/zxJ4M94eaQL3aac0w==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-linux-x64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-x64-gnu/-/lightningcss-cli-linux-x64-gnu-1.25.1.tgz",
+ "integrity": "sha512-ax5XP0ZIoA7A8JVbVmgjsNdyKzzRKVllBASpAJZq6a7BJWceZ/QM9ScUdjs15J4Q4FSsz1Uvk5JKq5y3/lOzFA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-linux-x64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-x64-musl/-/lightningcss-cli-linux-x64-musl-1.25.1.tgz",
+ "integrity": "sha512-6OK8l3mNDStoAh6v1v5bZumfh4uGqu+8ZxrFVYplyKSKNZcGVvP3Vh5VlRfOIFyOHB0td8BOW/V3aOR8X//WxQ==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-cli-win32-x64-msvc": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-win32-x64-msvc/-/lightningcss-cli-win32-x64-msvc-1.25.1.tgz",
+ "integrity": "sha512-78SN/Yn2alLEQd/PF4TvcRzIGeu1EXLV6XZZs4M+aEqn4IMEY/k6JWXDvighXpHOM2KyIDfmUA72pARQKFeAAg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-arm64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.25.1.tgz",
+ "integrity": "sha512-G4Dcvv85bs5NLENcu/s1f7ehzE3D5ThnlWSDwE190tWXRQCQaqwcuHe+MGSVI/slm0XrxnaayXY+cNl3cSricw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-darwin-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.25.1.tgz",
+ "integrity": "sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "darwin"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-freebsd-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.25.1.tgz",
+ "integrity": "sha512-hXoy2s9A3KVNAIoKz+Fp6bNeY+h9c3tkcx1J3+pS48CqAt+5bI/R/YY4hxGL57fWAIquRjGKW50arltD6iRt/w==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "freebsd"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm-gnueabihf": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.25.1.tgz",
+ "integrity": "sha512-tWyMgHFlHlp1e5iW3EpqvH5MvsgoN7ZkylBbG2R2LWxnvH3FuWCJOhtGcYx9Ks0Kv0eZOBud789odkYLhyf1ng==",
+ "cpu": [
+ "arm"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.25.1.tgz",
+ "integrity": "sha512-Xjxsx286OT9/XSnVLIsFEDyDipqe4BcLeB4pXQ/FEA5+2uWCCuAEarUNQumRucnj7k6ftkAHUEph5r821KBccQ==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-arm64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.25.1.tgz",
+ "integrity": "sha512-IhxVFJoTW8wq6yLvxdPvyHv4NjzcpN1B7gjxrY3uaykQNXPHNIpChLB52+wfH+yS58zm1PL4LemUp8u9Cfp6Bw==",
+ "cpu": [
+ "arm64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.25.1.tgz",
+ "integrity": "sha512-RXIaru79KrREPEd6WLXfKfIp4QzoppZvD3x7vuTKkDA64PwTzKJ2jaC43RZHRt8BmyIkRRlmywNhTRMbmkPYpA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-linux-x64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.25.1.tgz",
+ "integrity": "sha512-TdcNqFsAENEEFr8fJWg0Y4fZ/nwuqTRsIr7W7t2wmDUlA8eSXVepeeONYcb+gtTj1RaXn/WgNLB45SFkz+XBZA==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "linux"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
+ "node_modules/lightningcss-win32-x64-msvc": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.25.1.tgz",
+ "integrity": "sha512-9KZZkmmy9oGDSrnyHuxP6iMhbsgChUiu/NSgOx+U1I/wTngBStDf2i2aGRCHvFqj19HqqBEI4WuGVQBa2V6e0A==",
+ "cpu": [
+ "x64"
+ ],
+ "dev": true,
+ "optional": true,
+ "os": [
+ "win32"
+ ],
+ "engines": {
+ "node": ">= 12.0.0"
+ },
+ "funding": {
+ "type": "opencollective",
+ "url": "https://opencollective.com/parcel"
+ }
+ },
"node_modules/lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -2037,9 +2467,9 @@
}
},
"node_modules/minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"dependencies": {
"brace-expansion": "^1.1.7"
@@ -3215,29 +3645,6 @@
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
"dev": true
},
- "node_modules/sass": {
- "version": "1.45.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz",
- "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==",
- "dev": true,
- "dependencies": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "bin": {
- "sass": "sass.js"
- },
- "engines": {
- "node": ">=8.9.0"
- }
- },
- "node_modules/sass/node_modules/immutable": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
- "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
- "dev": true
- },
"node_modules/section-matter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
@@ -3317,15 +3724,6 @@
"node": ">=8.0.0"
}
},
- "node_modules/source-map-js": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
- "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
- "dev": true,
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/spawn-command": {
"version": "0.0.2-1",
"resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
@@ -3528,6 +3926,31 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "node_modules/typescript": {
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+ "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
+ "dev": true,
+ "bin": {
+ "tsc": "bin/tsc",
+ "tsserver": "bin/tsserver"
+ },
+ "engines": {
+ "node": ">=14.17"
+ }
+ },
+ "node_modules/typescript-language-server": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/typescript-language-server/-/typescript-language-server-4.3.3.tgz",
+ "integrity": "sha512-3QLj57Ru9S6zv10sa4z1pA3TIR1Rdkd04Ke0EszbO4fx5PLdlYhlC/PMxwlyxls9wrZs7wPCME1Ru0s1Gabz4Q==",
+ "dev": true,
+ "bin": {
+ "typescript-language-server": "lib/cli.mjs"
+ },
+ "engines": {
+ "node": ">=18"
+ }
+ },
"node_modules/uc.micro": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz",
@@ -3992,9 +4415,9 @@
"dev": true
},
"node_modules/ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"engines": {
"node": ">=10.0.0"
@@ -4486,12 +4909,12 @@
}
},
"braces": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz",
- "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==",
+ "version": "3.0.3",
+ "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz",
+ "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==",
"dev": true,
"requires": {
- "fill-range": "^7.0.1"
+ "fill-range": "^7.1.1"
}
},
"buffer-from": {
@@ -4743,6 +5166,12 @@
"integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==",
"dev": true
},
+ "detect-libc": {
+ "version": "1.0.3",
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
+ "integrity": "sha512-pGjwhsmsp4kL2RTz08wcOlGN83otlqHeD/Z5T8GXZB+/YcpQ/dgo+lbU8ZsGxV0HIvqqxo9l7mqYwyYMD9bKDg==",
+ "dev": true
+ },
"dev-ip": {
"version": "1.0.1",
"resolved": "https://registry.npmjs.org/dev-ip/-/dev-ip-1.0.1.tgz",
@@ -4849,9 +5278,9 @@
}
},
"escalade": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz",
- "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz",
+ "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==",
"dev": true
},
"escape-html": {
@@ -4949,9 +5378,9 @@
}
},
"fill-range": {
- "version": "7.0.1",
- "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz",
- "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==",
+ "version": "7.1.1",
+ "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz",
+ "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==",
"dev": true,
"requires": {
"to-regex-range": "^5.0.1"
@@ -5108,9 +5537,9 @@
"dev": true
},
"ignore": {
- "version": "5.1.8",
- "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.1.8.tgz",
- "integrity": "sha512-BMpfD7PpiETpBl/A6S498BaIJ6Y/ABT93ETbby2fP00v4EbvPBXWEoaR1UBPKs3iR53pJY7EtZk5KACI57i1Uw==",
+ "version": "5.3.1",
+ "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.1.tgz",
+ "integrity": "sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==",
"dev": true
},
"inflight": {
@@ -5261,13 +5690,10 @@
"dev": true
},
"json5": {
- "version": "2.2.0",
- "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.0.tgz",
- "integrity": "sha512-f+8cldu7X/y7RAJurMEJmdoKXGB/X550w2Nr3tTbezL6RwEE/iMcm+tZnXeoZtKuOq6ft8+CqzEkrIgx1fPoQA==",
- "dev": true,
- "requires": {
- "minimist": "^1.2.5"
- }
+ "version": "2.2.3",
+ "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz",
+ "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==",
+ "dev": true
},
"junk": {
"version": "1.0.3",
@@ -5318,6 +5744,168 @@
}
}
},
+ "lightningcss": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss/-/lightningcss-1.25.1.tgz",
+ "integrity": "sha512-V0RMVZzK1+rCHpymRv4URK2lNhIRyO8g7U7zOFwVAhJuat74HtkjIQpQRKNCwFEYkRGpafOpmXXLoaoBcyVtBg==",
+ "dev": true,
+ "requires": {
+ "detect-libc": "^1.0.3",
+ "lightningcss-darwin-arm64": "1.25.1",
+ "lightningcss-darwin-x64": "1.25.1",
+ "lightningcss-freebsd-x64": "1.25.1",
+ "lightningcss-linux-arm-gnueabihf": "1.25.1",
+ "lightningcss-linux-arm64-gnu": "1.25.1",
+ "lightningcss-linux-arm64-musl": "1.25.1",
+ "lightningcss-linux-x64-gnu": "1.25.1",
+ "lightningcss-linux-x64-musl": "1.25.1",
+ "lightningcss-win32-x64-msvc": "1.25.1"
+ }
+ },
+ "lightningcss-cli": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli/-/lightningcss-cli-1.25.1.tgz",
+ "integrity": "sha512-rrAgDqDIcG3bPHG7a77jxqvLIXkm3nvMIFbfeD6GPjlIs+EtTMdKMKDR917RE5MGdLseRKf+3yu+1nsroMZHnQ==",
+ "dev": true,
+ "requires": {
+ "detect-libc": "^1.0.3",
+ "lightningcss-cli-darwin-arm64": "1.25.1",
+ "lightningcss-cli-darwin-x64": "1.25.1",
+ "lightningcss-cli-freebsd-x64": "1.25.1",
+ "lightningcss-cli-linux-arm-gnueabihf": "1.25.1",
+ "lightningcss-cli-linux-arm64-gnu": "1.25.1",
+ "lightningcss-cli-linux-arm64-musl": "1.25.1",
+ "lightningcss-cli-linux-x64-gnu": "1.25.1",
+ "lightningcss-cli-linux-x64-musl": "1.25.1",
+ "lightningcss-cli-win32-x64-msvc": "1.25.1"
+ }
+ },
+ "lightningcss-cli-darwin-arm64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-darwin-arm64/-/lightningcss-cli-darwin-arm64-1.25.1.tgz",
+ "integrity": "sha512-T+8n8AtfRnNxI97dKLT3+FpYDyioH0KLkoAjBxnUZVdyScmgqsBGtqXsdObLxyiNpLCJUfrL4oSQbMI1Fq5KVw==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-darwin-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-darwin-x64/-/lightningcss-cli-darwin-x64-1.25.1.tgz",
+ "integrity": "sha512-x0N9I4f4NXUesFQa03EmOb3kIg/4TPAGPNY/UZDMAEhGA8bDTOgesvMdQqD4dss1ADsbWA5kIMeUyPKS8A12SQ==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-freebsd-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-freebsd-x64/-/lightningcss-cli-freebsd-x64-1.25.1.tgz",
+ "integrity": "sha512-uzEwexbRy/GkaPhW1GbTgXB6CKQhR7abVcp1uuMP1G9yICy8o6bCC941xCPtICDW6VfimPrAe9a9xt6UJwKI1A==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-linux-arm-gnueabihf": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm-gnueabihf/-/lightningcss-cli-linux-arm-gnueabihf-1.25.1.tgz",
+ "integrity": "sha512-Wgu0WoEPgGzdB4pSmfsiTnyQf2/nzz794R9YMa0tOReW/JP75pvTdv6vjUGvo0L9sasMKEehWAKoWi8s86YuMg==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-linux-arm64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm64-gnu/-/lightningcss-cli-linux-arm64-gnu-1.25.1.tgz",
+ "integrity": "sha512-nwCPUmsbjtJaKfaqGc2Cbsc1An1e40wgWa1sWrIL6pjLGlCGAym37jbe54h9U9UuAjQAik14lRZ45n9jJgeojg==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-linux-arm64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-arm64-musl/-/lightningcss-cli-linux-arm64-musl-1.25.1.tgz",
+ "integrity": "sha512-Fj/XW+ahY5VXIWGjf4/GCMxVDn5W+qJKaa0V35qmjGmdGSeR/utCq7f4qDxzzPTgrAlQ/zxJ4M94eaQL3aac0w==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-linux-x64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-x64-gnu/-/lightningcss-cli-linux-x64-gnu-1.25.1.tgz",
+ "integrity": "sha512-ax5XP0ZIoA7A8JVbVmgjsNdyKzzRKVllBASpAJZq6a7BJWceZ/QM9ScUdjs15J4Q4FSsz1Uvk5JKq5y3/lOzFA==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-linux-x64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-linux-x64-musl/-/lightningcss-cli-linux-x64-musl-1.25.1.tgz",
+ "integrity": "sha512-6OK8l3mNDStoAh6v1v5bZumfh4uGqu+8ZxrFVYplyKSKNZcGVvP3Vh5VlRfOIFyOHB0td8BOW/V3aOR8X//WxQ==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-cli-win32-x64-msvc": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-cli-win32-x64-msvc/-/lightningcss-cli-win32-x64-msvc-1.25.1.tgz",
+ "integrity": "sha512-78SN/Yn2alLEQd/PF4TvcRzIGeu1EXLV6XZZs4M+aEqn4IMEY/k6JWXDvighXpHOM2KyIDfmUA72pARQKFeAAg==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-darwin-arm64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-arm64/-/lightningcss-darwin-arm64-1.25.1.tgz",
+ "integrity": "sha512-G4Dcvv85bs5NLENcu/s1f7ehzE3D5ThnlWSDwE190tWXRQCQaqwcuHe+MGSVI/slm0XrxnaayXY+cNl3cSricw==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-darwin-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-darwin-x64/-/lightningcss-darwin-x64-1.25.1.tgz",
+ "integrity": "sha512-dYWuCzzfqRueDSmto6YU5SoGHvZTMU1Em9xvhcdROpmtOQLorurUZz8+xFxZ51lCO2LnYbfdjZ/gCqWEkwixNg==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-freebsd-x64": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-freebsd-x64/-/lightningcss-freebsd-x64-1.25.1.tgz",
+ "integrity": "sha512-hXoy2s9A3KVNAIoKz+Fp6bNeY+h9c3tkcx1J3+pS48CqAt+5bI/R/YY4hxGL57fWAIquRjGKW50arltD6iRt/w==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-linux-arm-gnueabihf": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm-gnueabihf/-/lightningcss-linux-arm-gnueabihf-1.25.1.tgz",
+ "integrity": "sha512-tWyMgHFlHlp1e5iW3EpqvH5MvsgoN7ZkylBbG2R2LWxnvH3FuWCJOhtGcYx9Ks0Kv0eZOBud789odkYLhyf1ng==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-linux-arm64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-gnu/-/lightningcss-linux-arm64-gnu-1.25.1.tgz",
+ "integrity": "sha512-Xjxsx286OT9/XSnVLIsFEDyDipqe4BcLeB4pXQ/FEA5+2uWCCuAEarUNQumRucnj7k6ftkAHUEph5r821KBccQ==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-linux-arm64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-arm64-musl/-/lightningcss-linux-arm64-musl-1.25.1.tgz",
+ "integrity": "sha512-IhxVFJoTW8wq6yLvxdPvyHv4NjzcpN1B7gjxrY3uaykQNXPHNIpChLB52+wfH+yS58zm1PL4LemUp8u9Cfp6Bw==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-linux-x64-gnu": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-gnu/-/lightningcss-linux-x64-gnu-1.25.1.tgz",
+ "integrity": "sha512-RXIaru79KrREPEd6WLXfKfIp4QzoppZvD3x7vuTKkDA64PwTzKJ2jaC43RZHRt8BmyIkRRlmywNhTRMbmkPYpA==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-linux-x64-musl": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-linux-x64-musl/-/lightningcss-linux-x64-musl-1.25.1.tgz",
+ "integrity": "sha512-TdcNqFsAENEEFr8fJWg0Y4fZ/nwuqTRsIr7W7t2wmDUlA8eSXVepeeONYcb+gtTj1RaXn/WgNLB45SFkz+XBZA==",
+ "dev": true,
+ "optional": true
+ },
+ "lightningcss-win32-x64-msvc": {
+ "version": "1.25.1",
+ "resolved": "https://registry.npmjs.org/lightningcss-win32-x64-msvc/-/lightningcss-win32-x64-msvc-1.25.1.tgz",
+ "integrity": "sha512-9KZZkmmy9oGDSrnyHuxP6iMhbsgChUiu/NSgOx+U1I/wTngBStDf2i2aGRCHvFqj19HqqBEI4WuGVQBa2V6e0A==",
+ "dev": true,
+ "optional": true
+ },
"lines-and-columns": {
"version": "1.1.6",
"resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.1.6.tgz",
@@ -5604,9 +6192,9 @@
"dev": true
},
"minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha1-UWbihkV/AzBgZL5Ul+jbsMPTIIM=",
+ "version": "3.1.2",
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz",
+ "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==",
"dev": true,
"requires": {
"brace-expansion": "^1.1.7"
@@ -6610,25 +7198,6 @@
"integrity": "sha1-mR7GnSluAxN0fVm9/St0XDX4go0=",
"dev": true
},
- "sass": {
- "version": "1.45.0",
- "resolved": "https://registry.npmjs.org/sass/-/sass-1.45.0.tgz",
- "integrity": "sha512-ONy5bjppoohtNkFJRqdz1gscXamMzN3wQy1YH9qO2FiNpgjLhpz/IPRGg0PpCjyz/pWfCOaNEaiEGCcjOFAjqw==",
- "dev": true,
- "requires": {
- "chokidar": ">=3.0.0 <4.0.0",
- "immutable": "^4.0.0",
- "source-map-js": ">=0.6.2 <2.0.0"
- },
- "dependencies": {
- "immutable": {
- "version": "4.0.0",
- "resolved": "https://registry.npmjs.org/immutable/-/immutable-4.0.0.tgz",
- "integrity": "sha512-zIE9hX70qew5qTUjSS7wi1iwj/l7+m54KWU247nhM3v806UdGj1yDndXj+IOYxxtW9zyLI+xqFNZjTuDaLUqFw==",
- "dev": true
- }
- }
- },
"section-matter": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/section-matter/-/section-matter-1.0.0.tgz",
@@ -6687,12 +7256,6 @@
"integrity": "sha512-h+z7HKHYXj6wJU+AnS/+IH8Uh9fdcX1Lrhg1/VMdf9PwoBQXFcXiAdsy2tSK0P6gKwJLXp02r90ahUCqHk9rrw==",
"dev": true
},
- "source-map-js": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.1.tgz",
- "integrity": "sha512-4+TN2b3tqOCd/kaGRJ/sTYA0tR0mdXx26ipdolxcwtJVqEnqNYvlCAt1q3ypy4QMlYus+Zh34RNtYLoq2oQ4IA==",
- "dev": true
- },
"spawn-command": {
"version": "0.0.2-1",
"resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2-1.tgz",
@@ -6841,6 +7404,18 @@
"integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=",
"dev": true
},
+ "typescript": {
+ "version": "5.5.4",
+ "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.5.4.tgz",
+ "integrity": "sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==",
+ "dev": true
+ },
+ "typescript-language-server": {
+ "version": "4.3.3",
+ "resolved": "https://registry.npmjs.org/typescript-language-server/-/typescript-language-server-4.3.3.tgz",
+ "integrity": "sha512-3QLj57Ru9S6zv10sa4z1pA3TIR1Rdkd04Ke0EszbO4fx5PLdlYhlC/PMxwlyxls9wrZs7wPCME1Ru0s1Gabz4Q==",
+ "dev": true
+ },
"uc.micro": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/uc.micro/-/uc.micro-2.0.0.tgz",
@@ -7173,9 +7748,9 @@
"dev": true
},
"ws": {
- "version": "8.16.0",
- "resolved": "https://registry.npmjs.org/ws/-/ws-8.16.0.tgz",
- "integrity": "sha512-HS0c//TP7Ina87TfiPUz1rQzMhHrl/SG2guqRcTOIUYD2q8uhUdNHZYJUaQ8aTGPzCh+c6oawMKW35nFl1dxyQ==",
+ "version": "8.18.0",
+ "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
+ "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"dev": true,
"requires": {}
},
diff --git a/package.json b/package.json
index c36b185d..87ed9a46 100644
--- a/package.json
+++ b/package.json
@@ -4,10 +4,10 @@
"repository": "https://github.com/braidn/blrrrg/",
"description": "A BLRRG",
"scripts": {
- "build": "eleventy && npm run sass",
- "serve": "concurrently 'eleventy --serve' 'npm run sass:watch'",
- "sass": "sass styles/:_site/styles/",
- "sass:watch": "npm run sass && npm run sass -- -w",
+ "serve": "concurrently 'eleventy --serve' 'npm run build:css:dev'",
+ "build": "npm run build:css && eleventy",
+ "build:css": "lightningcss --minify --bundle --targets '>= 0.25%' styles/index.css -o _site/styles/index.css",
+ "build:css:dev": "lightningcss --bundle --targets '>= 0.25%' styles/index.css -o _site/styles/index.css",
"clean": "rm -rf _site",
"test": "echo \"Error: no test specified\" && exit 1",
"lint-posts": "remark posts"
@@ -21,12 +21,15 @@
"@11ty/eleventy-plugin-syntaxhighlight": "^5.0.0",
"concurrently": "^7.0.0",
"eleventy-plugin-youtube-embed": "^1.10.2",
+ "lightningcss": "^1.25.1",
+ "lightningcss-cli": "^1.25.1",
"markdown-it-footnote": "^3.0.2",
"remark-cli": "^9.0.0",
"remark-frontmatter": "^3.0.0",
"remark-lint": "^8.0.0",
"remark-preset-lint-consistent": "^4.0.0",
- "sass": "^1.45.0",
+ "typescript": "^5.5.4",
+ "typescript-language-server": "^4.3.3",
"xmlhttprequest-ssl": ">=1.6.1"
},
"remarkConfig": {
diff --git a/postcss.config.js b/postcss.config.js
new file mode 100644
index 00000000..2640a8f3
--- /dev/null
+++ b/postcss.config.js
@@ -0,0 +1,8 @@
+module.exports = {
+ plugins: [
+ require('postcss-import'),
+ require('autoprefixer'),
+ ...(process.env.NODE_ENV === "production" ? [require("cssnano")({preset: 'default'})] : [])
+ ],
+};
+
diff --git a/shell.nix b/shell.nix
index fad437c1..aec5ef0d 100644
--- a/shell.nix
+++ b/shell.nix
@@ -9,6 +9,8 @@ mkShell {
nodejs
];
+ NODE_ENV = "development";
+
shellHook = ''
'';
}
diff --git a/styles/blogpost.css b/styles/blogpost.css
new file mode 100644
index 00000000..4c1890c2
--- /dev/null
+++ b/styles/blogpost.css
@@ -0,0 +1,60 @@
+/* Basic styles for the post container */
+.post-container {
+ margin-top: 16px;
+}
+
+/* Styles for blockquotes */
+blockquote {
+ margin: 0 auto;
+ padding: 1px 1em 1px 1em;
+ border-left: 5px solid #999;
+}
+
+/* Remove default :before content for blockquotes */
+blockquote::before {
+ display: none;
+}
+
+/* Additional margin for all but the first blockquote */
+blockquote:not(:first-of-type) {
+ margin-top: 0.5em;
+}
+
+/* Paragraph styles within blockquote */
+blockquote p {
+ color: #555;
+ font-size: 12pt;
+ line-height: 1.4;
+ font-family: 'PT Serif', Cambria, 'Hoefler Text', Utopia, 'Liberation Serif', 'Nimbus Roman No9 L Regular', Times, 'Times New Roman', serif;
+}
+
+/* Footer styles within blockquote */
+blockquote footer {
+ margin-top: 0.5em;
+ padding: 0;
+ color: #777;
+ font-size: 12pt;
+ text-align: left;
+ font-style: italic;
+}
+
+/* Adding content before footer in blockquote */
+blockquote footer::before {
+ content: '— ';
+}
+
+/* Responsive styles for blockquotes at a minimum width of 300px */
+@media (min-width: 300px) {
+ blockquote {
+ padding: 1em 20% 1em 1em;
+ }
+
+ blockquote p {
+ font-size: 14pt;
+ }
+
+ blockquote:nth-of-type(even) {
+ padding: 1em 1em 1em 20%;
+ }
+}
+
diff --git a/styles/blogpost.scss b/styles/blogpost.scss
deleted file mode 100644
index cb27c7c2..00000000
--- a/styles/blogpost.scss
+++ /dev/null
@@ -1,43 +0,0 @@
-.post-container {
- margin-top: 16px;
-}
-
-blockquote {
- margin: 0 auto;
- padding: 1px 1em 1px 1em;
- border-left: 5px solid #999;
- &:before {
- display: none;
- }
- &:not(:first-of-type) {
- margin-top: .5em;
- }
- p {
- color: #555;
- font-size: 12pt;
- line-height: 1.4;
- font-family: 'PT Serif', Cambria, 'Hoefler Text', Utopia, 'Liberation Serif', 'Nimbus Roman No9 L Regular', Times, 'Times New Roman', serif;
- }
- footer {
- margin-top: .5em;
- padding: 0;
- color: #777;
- font-size: 12pt;
- text-align: left;
- font-style: italic;
- }
- footer:before {
- content: '— ';
- }
-}
-@element 'blockquote' and (min-width: 300px) {
- blockquote {
- padding: 1em 20% 1em 1em;
- }
- blockquote p {
- font-size: 14pt;
- }
- blockquote:nth-of-type(even) {
- padding: 1em 1em 1em 20%;
- }
-}
diff --git a/styles/common.scss b/styles/common.css
similarity index 50%
rename from styles/common.scss
rename to styles/common.css
index bb1c8080..80b6446d 100644
--- a/styles/common.scss
+++ b/styles/common.css
@@ -1,38 +1,49 @@
-$bg: #f6f6f6;
+/* Define CSS variables */
+:root {
+ --bg-color: #f6f6f6;
+}
+/* Styles for text selection */
::selection {
color: white;
background-color: brown;
}
+/* Styles for text selection in Mozilla browsers */
::-moz-selection {
color: white;
background-color: brown;
}
+/* Basic styles for body */
body {
font-family: 'Noto Serif KR', 'IBM Plex Sans', serif;
- background: $bg
+ background: var(--bg-color);
}
+/* Styles for container */
.container {
width: 50%;
padding: 0 25%;
}
+/* Styles for links */
a {
text-decoration: none;
color: brown;
+}
- &:hover {
- cursor: pointer;
- text-decoration: underline;
- }
+/* Hover states for links */
+a:hover {
+ cursor: pointer;
+ text-decoration: underline;
}
+/* Responsive styles for container between 320px and 480px */
@media (min-width: 320px) and (max-width: 480px) {
.container {
width: 100%;
padding: 0 8px 32px 8px;
}
}
+
diff --git a/styles/homepage.css b/styles/homepage.css
new file mode 100644
index 00000000..b03e6db7
--- /dev/null
+++ b/styles/homepage.css
@@ -0,0 +1,10 @@
+/* Styles for the post */
+.post {
+ margin-top: 16px;
+}
+
+/* Styles for the post date within the post */
+.post .post-date {
+ font-size: 12px;
+}
+
diff --git a/styles/homepage.scss b/styles/homepage.scss
deleted file mode 100644
index 4eb2b769..00000000
--- a/styles/homepage.scss
+++ /dev/null
@@ -1,7 +0,0 @@
-.post {
- margin-top: 16px;
-
- .post-date {
- font-size: 12px;
- }
-}
diff --git a/styles/index.css b/styles/index.css
new file mode 100644
index 00000000..59b12637
--- /dev/null
+++ b/styles/index.css
@@ -0,0 +1,4 @@
+@import 'common.css';
+@import 'homepage.css';
+@import 'blogpost.css';
+@import 'prism-ally-dark.css';
diff --git a/styles/prism-a11y-dark.scss b/styles/prism-ally-dark.css
similarity index 88%
rename from styles/prism-a11y-dark.scss
rename to styles/prism-ally-dark.css
index 8788e602..740f91be 100644
--- a/styles/prism-a11y-dark.scss
+++ b/styles/prism-ally-dark.css
@@ -4,6 +4,7 @@
* @author ericwbailey
*/
+/* Basic styles for code elements */
code[class*="language-"],
pre[class*="language-"] {
color: #f8f8f2;
@@ -15,37 +16,28 @@ pre[class*="language-"] {
word-break: normal;
word-wrap: normal;
line-height: 1.5;
-
- -moz-tab-size: 4;
- -o-tab-size: 4;
tab-size: 4;
-
- -webkit-hyphens: none;
- -moz-hyphens: none;
- -ms-hyphens: none;
hyphens: none;
}
-/* Code blocks */
+/* Styles for code blocks */
pre[class*="language-"] {
padding: 1em;
margin: 0.5em 0;
overflow: auto;
border-radius: 0.3em;
-}
-
-:not(pre) > code[class*="language-"],
-pre[class*="language-"] {
background: #2b2b2b;
}
-/* Inline code */
+/* Styles for inline code not within a pre element */
:not(pre) > code[class*="language-"] {
padding: 0.1em;
border-radius: 0.3em;
white-space: normal;
+ background: #2b2b2b;
}
+/* Styling for various tokens */
.token.comment,
.token.prolog,
.token.doctype,
@@ -90,12 +82,9 @@ pre[class*="language-"] {
.token.atrule,
.token.attr-value,
-.token.function {
- color: #ffd700;
-}
-
+.token.function,
.token.keyword {
- color: #00e0e0;
+ color: #ffd700;
}
.token.regex,
@@ -103,10 +92,13 @@ pre[class*="language-"] {
color: #ffd700;
}
+/* Styling for important and bold tokens */
.token.important,
.token.bold {
font-weight: bold;
}
+
+/* Styling for italic tokens */
.token.italic {
font-style: italic;
}
@@ -115,6 +107,7 @@ pre[class*="language-"] {
cursor: help;
}
+/* High contrast mode styles */
@media screen and (-ms-high-contrast: active) {
code[class*="language-"],
pre[class*="language-"] {
@@ -158,3 +151,4 @@ pre[class*="language-"] {
font-weight: normal;
}
}
+