lots of stuff ig
This commit is contained in:
parent
c7c8b0c8cc
commit
643784b1ab
13 changed files with 317 additions and 84 deletions
|
@ -3,6 +3,7 @@ import mdx from "@astrojs/mdx";
|
||||||
import nodejs from "@astrojs/node";
|
import nodejs from "@astrojs/node";
|
||||||
import { remarkReadingTime } from "./remark-reading-time.mjs";
|
import { remarkReadingTime } from "./remark-reading-time.mjs";
|
||||||
import { modifiedTime } from "./remark-modified-time.mjs";
|
import { modifiedTime } from "./remark-modified-time.mjs";
|
||||||
|
import remarkCallout from "@r4ai/remark-callout";
|
||||||
|
|
||||||
export default defineConfig({
|
export default defineConfig({
|
||||||
site: "https://argentumcation.com",
|
site: "https://argentumcation.com",
|
||||||
|
@ -11,7 +12,7 @@ export default defineConfig({
|
||||||
shikiConfig: {
|
shikiConfig: {
|
||||||
theme: "css-variables",
|
theme: "css-variables",
|
||||||
},
|
},
|
||||||
remarkPlugins: [remarkReadingTime, modifiedTime],
|
remarkPlugins: [remarkReadingTime, modifiedTime, remarkCallout],
|
||||||
},
|
},
|
||||||
adapter: nodejs({
|
adapter: nodejs({
|
||||||
mode: "standalone",
|
mode: "standalone",
|
||||||
|
|
|
@ -24,16 +24,19 @@
|
||||||
"@astrojs/mdx": "^1.1.0",
|
"@astrojs/mdx": "^1.1.0",
|
||||||
"@astrojs/node": "^6.0.1",
|
"@astrojs/node": "^6.0.1",
|
||||||
"@astrojs/rss": "^3.0.0",
|
"@astrojs/rss": "^3.0.0",
|
||||||
|
"@r4ai/remark-callout": "^0.4.0",
|
||||||
"accessible-astro-components": "^1.6.6",
|
"accessible-astro-components": "^1.6.6",
|
||||||
"astro": "^3.2.0",
|
"astro": "^3.2.0",
|
||||||
"astro-icon": "^0.8.1",
|
"astro-icon": "^0.8.1",
|
||||||
"dayjs": "^1.11.10",
|
"dayjs": "^1.11.10",
|
||||||
"highlight.js": "^11.8.0",
|
"highlight.js": "^11.8.0",
|
||||||
"htmx.org": "^1.9.6",
|
"htmx.org": "^1.9.6",
|
||||||
|
"markdown-it": "^14.1.0",
|
||||||
"mdast-util-to-string": "^4.0.0",
|
"mdast-util-to-string": "^4.0.0",
|
||||||
"npm-watch": "^0.11.0",
|
"npm-watch": "^0.11.0",
|
||||||
"reading-time": "^1.5.0",
|
"reading-time": "^1.5.0",
|
||||||
"rollup": "^3.29.4",
|
"rollup": "^3.29.4",
|
||||||
|
"sanitize-html": "^2.13.0",
|
||||||
"sass": "^1.68.0"
|
"sass": "^1.68.0"
|
||||||
},
|
},
|
||||||
"devDependencies": {
|
"devDependencies": {
|
||||||
|
|
115
pnpm-lock.yaml
generated
115
pnpm-lock.yaml
generated
|
@ -20,6 +20,9 @@ dependencies:
|
||||||
'@astrojs/rss':
|
'@astrojs/rss':
|
||||||
specifier: ^3.0.0
|
specifier: ^3.0.0
|
||||||
version: 3.0.0
|
version: 3.0.0
|
||||||
|
'@r4ai/remark-callout':
|
||||||
|
specifier: ^0.4.0
|
||||||
|
version: 0.4.0
|
||||||
accessible-astro-components:
|
accessible-astro-components:
|
||||||
specifier: ^1.6.6
|
specifier: ^1.6.6
|
||||||
version: 1.6.6
|
version: 1.6.6
|
||||||
|
@ -38,6 +41,9 @@ dependencies:
|
||||||
htmx.org:
|
htmx.org:
|
||||||
specifier: ^1.9.6
|
specifier: ^1.9.6
|
||||||
version: 1.9.6
|
version: 1.9.6
|
||||||
|
markdown-it:
|
||||||
|
specifier: ^14.1.0
|
||||||
|
version: 14.1.0
|
||||||
mdast-util-to-string:
|
mdast-util-to-string:
|
||||||
specifier: ^4.0.0
|
specifier: ^4.0.0
|
||||||
version: 4.0.0
|
version: 4.0.0
|
||||||
|
@ -50,6 +56,9 @@ dependencies:
|
||||||
rollup:
|
rollup:
|
||||||
specifier: ^3.29.4
|
specifier: ^3.29.4
|
||||||
version: 3.29.4
|
version: 3.29.4
|
||||||
|
sanitize-html:
|
||||||
|
specifier: ^2.13.0
|
||||||
|
version: 2.13.0
|
||||||
sass:
|
sass:
|
||||||
specifier: ^1.68.0
|
specifier: ^1.68.0
|
||||||
version: 1.68.0
|
version: 1.68.0
|
||||||
|
@ -1017,6 +1026,14 @@ packages:
|
||||||
'@nodelib/fs.scandir': 2.1.5
|
'@nodelib/fs.scandir': 2.1.5
|
||||||
fastq: 1.15.0
|
fastq: 1.15.0
|
||||||
|
|
||||||
|
/@r4ai/remark-callout@0.4.0:
|
||||||
|
resolution: {integrity: sha512-bJJCmKVyKwRYul0O+oI62gGCKqUcXL1wihmxMiFT3y98DL5fTpzd1jjlHshJHf+sdg3tHfRUlVmxC2U4OlF1kg==}
|
||||||
|
engines: {node: '>=16'}
|
||||||
|
dependencies:
|
||||||
|
defu: 6.1.4
|
||||||
|
unist-util-visit: 5.0.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/@trysound/sax@0.2.0:
|
/@trysound/sax@0.2.0:
|
||||||
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
resolution: {integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==}
|
||||||
engines: {node: '>=10.13.0'}
|
engines: {node: '>=10.13.0'}
|
||||||
|
@ -1913,6 +1930,15 @@ packages:
|
||||||
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
resolution: {integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==}
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/deepmerge@4.3.1:
|
||||||
|
resolution: {integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
|
/defu@6.1.4:
|
||||||
|
resolution: {integrity: sha512-mEQCMmwJu317oSz8CwdIOdwf3xMif1ttiM8LTufzc3g6kR+9Pe236twL8j3IYT1F7GfRgGcW6MWxzZjLIkuHIg==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/depd@2.0.0:
|
/depd@2.0.0:
|
||||||
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
|
resolution: {integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==}
|
||||||
engines: {node: '>= 0.8'}
|
engines: {node: '>= 0.8'}
|
||||||
|
@ -1963,6 +1989,14 @@ packages:
|
||||||
entities: 2.2.0
|
entities: 2.2.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/dom-serializer@2.0.0:
|
||||||
|
resolution: {integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==}
|
||||||
|
dependencies:
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
domhandler: 5.0.3
|
||||||
|
entities: 4.5.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/domelementtype@2.3.0:
|
/domelementtype@2.3.0:
|
||||||
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
|
resolution: {integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -1974,6 +2008,13 @@ packages:
|
||||||
domelementtype: 2.3.0
|
domelementtype: 2.3.0
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/domhandler@5.0.3:
|
||||||
|
resolution: {integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==}
|
||||||
|
engines: {node: '>= 4'}
|
||||||
|
dependencies:
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/domutils@2.8.0:
|
/domutils@2.8.0:
|
||||||
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
|
resolution: {integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -1982,6 +2023,14 @@ packages:
|
||||||
domhandler: 4.3.1
|
domhandler: 4.3.1
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/domutils@3.1.0:
|
||||||
|
resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
|
||||||
|
dependencies:
|
||||||
|
dom-serializer: 2.0.0
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
domhandler: 5.0.3
|
||||||
|
dev: false
|
||||||
|
|
||||||
/dset@3.1.2:
|
/dset@3.1.2:
|
||||||
resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==}
|
resolution: {integrity: sha512-g/M9sqy3oHe477Ar4voQxWtaPIFw1jTdKZuomOjhCcBx9nHUNn0pu6NopuFFrTh/TRZIKEj+76vLWFu9BNKk+Q==}
|
||||||
engines: {node: '>=4'}
|
engines: {node: '>=4'}
|
||||||
|
@ -2035,6 +2084,11 @@ packages:
|
||||||
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
|
resolution: {integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/entities@4.5.0:
|
||||||
|
resolution: {integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==}
|
||||||
|
engines: {node: '>=0.12'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/es-module-lexer@1.3.1:
|
/es-module-lexer@1.3.1:
|
||||||
resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==}
|
resolution: {integrity: sha512-JUFAyicQV9mXc3YRxPnDlrfBKpqt6hUYzz9/boprUJHs4e4KVr3XwOF70doO6gwXUor6EWZJAyWAfKki84t20Q==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -2116,7 +2170,6 @@ packages:
|
||||||
/escape-string-regexp@4.0.0:
|
/escape-string-regexp@4.0.0:
|
||||||
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
resolution: {integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
dev: true
|
|
||||||
|
|
||||||
/escape-string-regexp@5.0.0:
|
/escape-string-regexp@5.0.0:
|
||||||
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
resolution: {integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==}
|
||||||
|
@ -2635,6 +2688,15 @@ packages:
|
||||||
resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
|
resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/htmlparser2@8.0.2:
|
||||||
|
resolution: {integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==}
|
||||||
|
dependencies:
|
||||||
|
domelementtype: 2.3.0
|
||||||
|
domhandler: 5.0.3
|
||||||
|
domutils: 3.1.0
|
||||||
|
entities: 4.5.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/htmx.org@1.9.6:
|
/htmx.org@1.9.6:
|
||||||
resolution: {integrity: sha512-4Zebo9nzg8u2ZHuIJmvB/nQS6kIMLIoEfhTg/oRwyCIJhL5MLA/jPU1EPEBtGOmG4ZG0k05Vpd3sab2+zfvteQ==}
|
resolution: {integrity: sha512-4Zebo9nzg8u2ZHuIJmvB/nQS6kIMLIoEfhTg/oRwyCIJhL5MLA/jPU1EPEBtGOmG4ZG0k05Vpd3sab2+zfvteQ==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -2810,6 +2872,11 @@ packages:
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/is-plain-object@5.0.0:
|
||||||
|
resolution: {integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==}
|
||||||
|
engines: {node: '>=0.10.0'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/is-reference@3.0.2:
|
/is-reference@3.0.2:
|
||||||
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
|
resolution: {integrity: sha512-v3rht/LgVcsdZa3O2Nqs+NMowLOxeOm7Ay9+/ARQ2F+qEoANRcqrjAZKGN0v8ymUetZGgkp26LTnGT7H0Qo9Pg==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -2915,6 +2982,12 @@ packages:
|
||||||
type-check: 0.4.0
|
type-check: 0.4.0
|
||||||
dev: true
|
dev: true
|
||||||
|
|
||||||
|
/linkify-it@5.0.0:
|
||||||
|
resolution: {integrity: sha512-5aHCbzQRADcdP+ATqnDuhhJ/MRIqDkZX5pyjFHRRysS8vZ5AbqGEoFIb6pYHPZ+L/OC2Lc+xT8uHVVR5CAK/wQ==}
|
||||||
|
dependencies:
|
||||||
|
uc.micro: 2.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/load-yaml-file@0.2.0:
|
/load-yaml-file@0.2.0:
|
||||||
resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
|
resolution: {integrity: sha512-OfCBkGEw4nN6JLtgRidPX6QxjBQGQf72q3si2uvqyFEMbycSFFHwAZeXx6cJgFM9wmLrf9zBwCP3Ivqa+LLZPw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -2978,6 +3051,18 @@ packages:
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/markdown-it@14.1.0:
|
||||||
|
resolution: {integrity: sha512-a54IwgWPaeBCAAsv13YgmALOF1elABB08FxO9i+r4VFk5Vl4pKokRPeX8u5TCgSsPi6ec1otfLjdOpVcgbpshg==}
|
||||||
|
hasBin: true
|
||||||
|
dependencies:
|
||||||
|
argparse: 2.0.1
|
||||||
|
entities: 4.5.0
|
||||||
|
linkify-it: 5.0.0
|
||||||
|
mdurl: 2.0.0
|
||||||
|
punycode.js: 2.3.1
|
||||||
|
uc.micro: 2.1.0
|
||||||
|
dev: false
|
||||||
|
|
||||||
/markdown-table@3.0.3:
|
/markdown-table@3.0.3:
|
||||||
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
|
resolution: {integrity: sha512-Z1NL3Tb1M9wH4XESsCDEksWoKTdlUafKc4pt0GRwjUyXaCFZ+dc3g2erqB6zm3szA2IUSi7VnPI+o/9jnxh9hw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -3186,6 +3271,10 @@ packages:
|
||||||
resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
|
resolution: {integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/mdurl@2.0.0:
|
||||||
|
resolution: {integrity: sha512-Lf+9+2r+Tdp5wXDXC4PcIBjTDtq4UKjCPMQhKIuzpJNW0b96kVqSwW0bT7FhRSfmAiFYgP+SCRvdrDozfh0U5w==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/merge-stream@2.0.0:
|
/merge-stream@2.0.0:
|
||||||
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
resolution: {integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -3847,6 +3936,10 @@ packages:
|
||||||
unist-util-visit-children: 2.0.2
|
unist-util-visit-children: 2.0.2
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/parse-srcset@1.0.2:
|
||||||
|
resolution: {integrity: sha512-/2qh0lav6CmI15FzA3i/2Bzk2zCgQhGMkvhOhKNcBVQ1ldgpbfiNTVslmooUmWJcADi1f1kIeynbDRVzNlfR6Q==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/parse5@6.0.1:
|
/parse5@6.0.1:
|
||||||
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
|
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
|
||||||
dev: false
|
dev: false
|
||||||
|
@ -4003,6 +4096,11 @@ packages:
|
||||||
dev: false
|
dev: false
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
|
/punycode.js@2.3.1:
|
||||||
|
resolution: {integrity: sha512-uxFIHU0YlHYhDQtV4R9J6a52SLx28BCjT+4ieh7IGbgwVJWO+km431c4yRlREUAsAmt/uMjQUyQHNEPf0M39CA==}
|
||||||
|
engines: {node: '>=6'}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/punycode@2.3.1:
|
/punycode@2.3.1:
|
||||||
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
resolution: {integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -4249,6 +4347,17 @@ packages:
|
||||||
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
resolution: {integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
||||||
|
/sanitize-html@2.13.0:
|
||||||
|
resolution: {integrity: sha512-Xff91Z+4Mz5QiNSLdLWwjgBDm5b1RU6xBT0+12rapjiaR7SwfRdjw8f+6Rir2MXKLrDicRFHdb51hGOAxmsUIA==}
|
||||||
|
dependencies:
|
||||||
|
deepmerge: 4.3.1
|
||||||
|
escape-string-regexp: 4.0.0
|
||||||
|
htmlparser2: 8.0.2
|
||||||
|
is-plain-object: 5.0.0
|
||||||
|
parse-srcset: 1.0.2
|
||||||
|
postcss: 8.4.31
|
||||||
|
dev: false
|
||||||
|
|
||||||
/sass-formatter@0.7.9:
|
/sass-formatter@0.7.9:
|
||||||
resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==}
|
resolution: {integrity: sha512-CWZ8XiSim+fJVG0cFLStwDvft1VI7uvXdCNJYXhDvowiv+DsbD1nXLiQ4zrE5UBvj5DWZJ93cwN0NX5PMsr1Pw==}
|
||||||
dependencies:
|
dependencies:
|
||||||
|
@ -4777,6 +4886,10 @@ packages:
|
||||||
engines: {node: '>=14.17'}
|
engines: {node: '>=14.17'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
/uc.micro@2.1.0:
|
||||||
|
resolution: {integrity: sha512-ARDJmphmdvUk6Glw7y9DQ2bFkKBHwQHLi2lsaH6PPmz/Ka9sFOBsBluozhDltWmnv9u/cF6Rt87znRTPV+yp/A==}
|
||||||
|
dev: false
|
||||||
|
|
||||||
/undefsafe@2.0.5:
|
/undefsafe@2.0.5:
|
||||||
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
|
resolution: {integrity: sha512-WxONCrssBM8TSPRqN5EmsjVrsv4A8X12J4ArBiiayv3DyyG3ZlIg6yysuuSYdZsVz3TKcTg2fd//Ujd4CHV1iA==}
|
||||||
dev: false
|
dev: false
|
||||||
|
|
|
@ -23,14 +23,14 @@ const { title, description } = Astro.props;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<script src="https://unpkg.com/hyperscript.org@0.9.11"></script>
|
<script src="https://unpkg.com/hyperscript.org@0.9.11"></script>
|
||||||
<link
|
<link
|
||||||
rel="stylesheet"
|
rel="stylesheet"
|
||||||
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
|
href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css"
|
||||||
/>
|
/>
|
||||||
|
|
||||||
<!-- Set default theme -->
|
<!-- Set default theme -->
|
||||||
<script is:inline>
|
<script is:inline>
|
||||||
const theme = (() => {
|
const theme = (() => {
|
||||||
if (localStorage.getItem("theme")?.startsWith("theme_")) {
|
if (localStorage.getItem("theme")?.startsWith("theme_")) {
|
||||||
return localStorage.getItem("theme");
|
return localStorage.getItem("theme");
|
||||||
}
|
}
|
||||||
|
@ -38,7 +38,7 @@ const theme = (() => {
|
||||||
return "theme_lunar_witch";
|
return "theme_lunar_witch";
|
||||||
}
|
}
|
||||||
return "theme_Bluloco-Zsh-Light";
|
return "theme_Bluloco-Zsh-Light";
|
||||||
})();
|
})();
|
||||||
window.localStorage.setItem("theme", theme);
|
window.localStorage.setItem("theme", theme);
|
||||||
document.documentElement.classList.add(theme);
|
document.documentElement.classList.add(theme);
|
||||||
</script>
|
</script>
|
||||||
|
|
|
@ -21,7 +21,7 @@ themes.delete("default");
|
||||||
(<span class="p-name">Mira</span>)
|
(<span class="p-name">Mira</span>)
|
||||||
</a>
|
</a>
|
||||||
<!-- Author Metadata -->
|
<!-- Author Metadata -->
|
||||||
<div hidden="">
|
<div style="display: none">
|
||||||
<span class="p-honorific-suffix">Kendo 3-Kyu Emeritus</span>
|
<span class="p-honorific-suffix">Kendo 3-Kyu Emeritus</span>
|
||||||
<img
|
<img
|
||||||
style="float:left; margin-right:4px"
|
style="float:left; margin-right:4px"
|
||||||
|
@ -32,7 +32,41 @@ themes.delete("default");
|
||||||
<a class="u-email" href="mailto:mira@ミラ.コム">mira@ミラ.コム</a>
|
<a class="u-email" href="mailto:mira@ミラ.コム">mira@ミラ.コム</a>
|
||||||
<span class="dt-bday">20XX-04-02</span>
|
<span class="dt-bday">20XX-04-02</span>
|
||||||
<div>
|
<div>
|
||||||
<span class="u-key"><!-- TODO --></span>
|
<link
|
||||||
|
rel="pgpkey"
|
||||||
|
type="application/pgp-keys"
|
||||||
|
title="ArgentumCation's PGP Key"
|
||||||
|
href="https://keyserver.ubuntu.com/pks/lookup?op=get&search=0xdd8583a510deb949714ed847430c50ca90f98bbe"
|
||||||
|
/>
|
||||||
|
<pre
|
||||||
|
class="u-key">
|
||||||
|
-----BEGIN PGP PUBLIC KEY BLOCK-----
|
||||||
|
xjMEZIjWHxYJKwYBBAHaRw8BAQdAtI4ucxI1PHAJNSIj2TITGcW4BWK2muk3sFfh
|
||||||
|
cyTHvrXNMkFyZ2VudHVtQ2F0aW9uIDxhcmdlbnR1bWNhdGlvbkBhcmdlbnR1bWNh
|
||||||
|
dGlvbi5jb20+wo4EExYKADYFCwkIBwIGFQoJCAsCBRYCAwEAAh4EFiEE3YWDpRDe
|
||||||
|
uUlxTthHQwxQypD5i74FAmSOOF8CGwEACgkQQwxQypD5i74vTwD/Y3T/Jet8zvAK
|
||||||
|
8MhZvEG1H+M/eQFZaAzvSA2FOWmTRo8A+wbyQCbun9Bb5fCZ4/kxHcaGzVgUJSst
|
||||||
|
4j/RMrWUXdIMwo4EExYKADYCGyMWIQTdhYOlEN65SXFO2EdDDFDKkPmLvgUCZI35
|
||||||
|
+gULCQgHAgYVCgkICwIFFgIDAQACHgQACgkQQwxQypD5i747swEA/ugdrs+omBA1
|
||||||
|
2qNqysT9QPqcPnVjSSvYVpVYjNBVvNcBAIDoQJ4T3IEv353iY6oaZfRwoHeFNYWr
|
||||||
|
xJwaGReiIDQFwpMEExYKADsWIQTdhYOlEN65SXFO2EdDDFDKkPmLvgUCZIjWHwIb
|
||||||
|
IwULCQgHAgIiAgYVCgkICwIEFgIDAQIeBwIXgAAKCRBDDFDKkPmLvl3wAQCPR0mt
|
||||||
|
8omFlGLTYi8XJqGu/ha+wGeGrNCh7LixYHfHkwD+Im2LqQkcNXLAJPDK1vGGOh0A
|
||||||
|
D+bSiGT+5Ly40/gkPw7OOARkiNYfEgorBgEEAZdVAQUBAQdAFfcK11UfBm4IPs9w
|
||||||
|
i7YrZ78OxMRm4wf0qdSCQ7vQTDoDAQgHwn4EGBYKACYCGwwWIQTdhYOlEN65SXFO
|
||||||
|
2EdDDFDKkPmLvgUCZI442gUJAeaWOwAKCRBDDFDKkPmLvixuAP9xx1LE2u2qK85v
|
||||||
|
w8tX0Xq0CYMcoJHlCkr5QClBd5v9MwD/anBykPYGnZaMXpqwAEFeY/YkhGWgThkK
|
||||||
|
zzjj1FvXywDCeAQYFgoAIBYhBN2Fg6UQ3rlJcU7YR0MMUMqQ+Yu+BQJkiNYfAhsM
|
||||||
|
AAoJEEMMUMqQ+Yu+mwsBAJV56nL80qeusyuAGrwX+Olgto8tXpmyCVFp825lJRPr
|
||||||
|
AP93N28QeqAnPssteJrWMUN/vrPC8WMebSkvu9jj252dAc4zBGSOOGYWCSsGAQQB
|
||||||
|
2kcPAQEHQOY3LSWsg9XK1rI7r2E+1tmX3Vi7W5opwkvqO6AsduZRwsA1BBgWCgAm
|
||||||
|
FiEE3YWDpRDeuUlxTthHQwxQypD5i74FAmSOOGYCGyIFCQHhM4AAgQkQQwxQypD5
|
||||||
|
i752IAQZFgoAHRYhBJg7grqI4mDBitvwbRVrumZ8pbPPBQJkjjhmAAoJEBVrumZ8
|
||||||
|
pbPPVE8A/0PuUBsaR5QJP7CjiRB0oGmFs4Q/xTLV+PFoUNQNPNlGAQDxJNx844Bs
|
||||||
|
spKDee99cgh6KMzRApNjNAmDBkKezFilBw2HAQDATl1ZehPrkQA1H6ytL0mELqQY
|
||||||
|
lJj4vTGSsBtTxmZ2NgD9HBjGd6OEAjJR7pAmF+720JzDHgtELnFI1E+/5JkNyAw= =staE
|
||||||
|
-----END PGP PUBLIC KEY BLOCK-----
|
||||||
|
</pre>
|
||||||
</div>
|
</div>
|
||||||
<span class="p-gender-identity">Who even knows anymore? (She/They)</span>
|
<span class="p-gender-identity">Who even knows anymore? (She/They)</span>
|
||||||
<span class="u-sound"
|
<span class="u-sound"
|
||||||
|
@ -66,6 +100,30 @@ themes.delete("default");
|
||||||
</div>
|
</div>
|
||||||
</form>
|
</form>
|
||||||
</div>
|
</div>
|
||||||
|
<table class="palette">
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:var(--background)"> </td>
|
||||||
|
<td style="background-color:var(--black)"> </td>
|
||||||
|
<td style="background-color:var(--red)"> </td>
|
||||||
|
<td style="background-color:var(--green)"> </td>
|
||||||
|
<td style="background-color:var(--yellow)"> </td>
|
||||||
|
<td style="background-color:var(--blue)"> </td>
|
||||||
|
<td style="background-color:var(--magenta)"> </td>
|
||||||
|
<td style="background-color:var(--cyan)"> </td>
|
||||||
|
<td style="background-color:var(--white)"> </td>
|
||||||
|
</tr>
|
||||||
|
<tr>
|
||||||
|
<td style="background-color:var(--foreground)"> </td>
|
||||||
|
<td style="background-color:var(--bright-black)"> </td>
|
||||||
|
<td style="background-color:var(--bright-red)"> </td>
|
||||||
|
<td style="background-color:var(--bright-green)"> </td>
|
||||||
|
<td style="background-color:var(--bright-yellow)"> </td>
|
||||||
|
<td style="background-color:var(--bright-blue)"> </td>
|
||||||
|
<td style="background-color:var(--bright-magenta)"> </td>
|
||||||
|
<td style="background-color:var(--bright-cyan)"> </td>
|
||||||
|
<td style="background-color:var(--bright-white)"> </td>
|
||||||
|
</tr>
|
||||||
|
</table>
|
||||||
<p style="margin:auto">
|
<p style="margin:auto">
|
||||||
<a href="https://fediring.net/previous?host=argentumcation.com">←</a>
|
<a href="https://fediring.net/previous?host=argentumcation.com">←</a>
|
||||||
<a href="https://fediring.net/">Fediring</a>
|
<a href="https://fediring.net/">Fediring</a>
|
||||||
|
|
|
@ -39,11 +39,13 @@ tags: [linux, btrfs]
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
- btrbk
|
> [!todo] TODO
|
||||||
- in place conversion
|
>
|
||||||
- subvol layout
|
> - btrbk
|
||||||
- dual Linux boot
|
> - in place conversion
|
||||||
- dual boot with windows
|
> - subvol layout
|
||||||
- automated package manager snapshots
|
> - dual Linux boot
|
||||||
- Swapfiles
|
> - dual boot with windows
|
||||||
- zfs comparison
|
> - automated package manager snapshots
|
||||||
|
> - Swapfiles
|
||||||
|
> - zfs comparison
|
||||||
|
|
|
@ -2,7 +2,7 @@
|
||||||
title: "Getting up and running with Traefik"
|
title: "Getting up and running with Traefik"
|
||||||
author: "ArgentumCation"
|
author: "ArgentumCation"
|
||||||
layout: ../../layouts/Layout.astro
|
layout: ../../layouts/Layout.astro
|
||||||
pubDate: "03 Apr, 2023"
|
pubDate: "2023-04-03"
|
||||||
slug: "traefik-setup"
|
slug: "traefik-setup"
|
||||||
---
|
---
|
||||||
|
|
||||||
|
@ -11,10 +11,10 @@ slug: "traefik-setup"
|
||||||
- only problem is its an absolute bitch to set up
|
- only problem is its an absolute bitch to set up
|
||||||
- Here's a stripped down `docker-compose.yml` to give you an idea of how I have it set up
|
- Here's a stripped down `docker-compose.yml` to give you an idea of how I have it set up
|
||||||
- The end result should be a lighttpd server running on `blog.argentumcation.com`
|
- The end result should be a lighttpd server running on `blog.argentumcation.com`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
# Just setting some default values for my containers
|
# Just setting some default values for my containers
|
||||||
x-service_defaults:
|
x-service_defaults: &service_defaults
|
||||||
&service_defaults
|
|
||||||
env_file: .env
|
env_file: .env
|
||||||
restart: unless-stopped
|
restart: unless-stopped
|
||||||
extra_hosts:
|
extra_hosts:
|
||||||
|
@ -32,11 +32,11 @@ services:
|
||||||
labels:
|
labels:
|
||||||
- traefik.http.services.traefik-docker.loadbalancer.server.port=8080
|
- traefik.http.services.traefik-docker.loadbalancer.server.port=8080
|
||||||
# For the management interface
|
# For the management interface
|
||||||
- '8080:8080'
|
- "8080:8080"
|
||||||
# To let traefik receive incoming HTTP traffic
|
# To let traefik receive incoming HTTP traffic
|
||||||
- '80:80'
|
- "80:80"
|
||||||
# To let traefik receive incoming HTTPS traffic
|
# To let traefik receive incoming HTTPS traffic
|
||||||
- '443:443'
|
- "443:443"
|
||||||
volumes:
|
volumes:
|
||||||
# This lets traefik see your docker services
|
# This lets traefik see your docker services
|
||||||
- $DOCKER_SOCK:/var/run/docker.sock:ro
|
- $DOCKER_SOCK:/var/run/docker.sock:ro
|
||||||
|
@ -57,8 +57,10 @@ services:
|
||||||
# automatically, but we'll just be explicit here
|
# automatically, but we'll just be explicit here
|
||||||
- traefik.http.services.lighttpd-docker.loadbalancer.server.port=80
|
- traefik.http.services.lighttpd-docker.loadbalancer.server.port=80
|
||||||
```
|
```
|
||||||
|
|
||||||
- `traefik.secrets.env` contains my cloudflare API key so that Traefik can automatically add DNS routes
|
- `traefik.secrets.env` contains my cloudflare API key so that Traefik can automatically add DNS routes
|
||||||
- For reference, here's my `.env` file
|
- For reference, here's my `.env` file
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
# GENERAL
|
# GENERAL
|
||||||
PUBLIC=argentumcation.com
|
PUBLIC=argentumcation.com
|
||||||
|
@ -80,8 +82,10 @@ PGID=1000
|
||||||
USER_UID=1000
|
USER_UID=1000
|
||||||
USER_GID=1000
|
USER_GID=1000
|
||||||
```
|
```
|
||||||
|
|
||||||
- And of course, the actual traefik configuration files:
|
- And of course, the actual traefik configuration files:
|
||||||
- `traefik.yml`:
|
- `traefik.yml`:
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
accessLog:
|
accessLog:
|
||||||
filePath: ./traefik-access.log
|
filePath: ./traefik-access.log
|
||||||
|
@ -130,9 +134,10 @@ providers:
|
||||||
file:
|
file:
|
||||||
directory: /etc/traefik/
|
directory: /etc/traefik/
|
||||||
watch: true
|
watch: true
|
||||||
|
|
||||||
```
|
```
|
||||||
|
|
||||||
- `traefik-dynamic.yml`
|
- `traefik-dynamic.yml`
|
||||||
|
|
||||||
```yaml
|
```yaml
|
||||||
http:
|
http:
|
||||||
middlewares: #This should redirect incoming http connections to https
|
middlewares: #This should redirect incoming http connections to https
|
||||||
|
|
|
@ -1,14 +1,11 @@
|
||||||
// 1. Import utilities from `astro:content`
|
// 1. Import utilities from `astro:content`
|
||||||
import { z, defineCollection } from "astro:content";
|
import { defineCollection } from "astro:content";
|
||||||
|
import { rssSchema } from "@astrojs/rss";
|
||||||
|
|
||||||
// 2. Define your collection(s)
|
// 2. Define your collection(s)
|
||||||
const blogCollection = defineCollection({
|
const blogCollection = defineCollection({
|
||||||
type: "content",
|
type: "content",
|
||||||
schema: z.object({
|
schema: rssSchema,
|
||||||
title: z.string(),
|
|
||||||
tags: z.array(z.string()).optional(),
|
|
||||||
pubDate: z.string(),
|
|
||||||
author: z.string(),
|
|
||||||
}),
|
|
||||||
});
|
});
|
||||||
// 3. Export a single `collections` object to register your collection(s)
|
// 3. Export a single `collections` object to register your collection(s)
|
||||||
// This key should match your collection directory name in "src/content"
|
// This key should match your collection directory name in "src/content"
|
||||||
|
|
|
@ -25,8 +25,10 @@ document.documentElement.classList.add(theme);
|
||||||
<body class="container">
|
<body class="container">
|
||||||
<Header />
|
<Header />
|
||||||
<main>
|
<main>
|
||||||
<h1>{title}</h1>
|
<article class="h-entry">
|
||||||
|
<h1 "p-name">{title}</h1>
|
||||||
<slot />
|
<slot />
|
||||||
|
</article>
|
||||||
</main>
|
</main>
|
||||||
<Footer />
|
<Footer />
|
||||||
</body>
|
</body>
|
||||||
|
|
|
@ -5,17 +5,17 @@ import Footer from "../components/Footer.astro";
|
||||||
import dayjs from "dayjs";
|
import dayjs from "dayjs";
|
||||||
import utc from "dayjs/plugin/utc";
|
import utc from "dayjs/plugin/utc";
|
||||||
|
|
||||||
const { minutesRead } = Astro.props.frontmatter
|
const { minutesRead } = Astro.props.frontmatter;
|
||||||
const {
|
const {
|
||||||
frontmatter: { title, description, pubDate, image, author },
|
frontmatter: { title, description, pubDate, image, author, slug },
|
||||||
} = Astro.props;
|
} = Astro.props;
|
||||||
|
|
||||||
dayjs.extend(utc);
|
dayjs.extend(utc);
|
||||||
|
|
||||||
const lastModified = dayjs()
|
const lastModified = (
|
||||||
.utc(Astro.props.frontmatter.lastModified)
|
dayjs(Astro.props.frontmatter.pubDate) ??
|
||||||
.format("YYYY-MM-DD HH:mm:ss UTC");
|
dayjs().utc(Astro.props.frontmatter.lastModified)
|
||||||
|
).format("YYYY-MM-DD HH:mm:ss");
|
||||||
---
|
---
|
||||||
|
|
||||||
<html lang="en">
|
<html lang="en">
|
||||||
|
@ -23,26 +23,27 @@ const lastModified = dayjs()
|
||||||
<BaseHead title={title} description={description} />
|
<BaseHead title={title} description={description} />
|
||||||
</head>
|
</head>
|
||||||
<body class="container">
|
<body class="container">
|
||||||
|
<div class="meta u-url">{Astro.url}</div>
|
||||||
<Header />
|
<Header />
|
||||||
<main>
|
<main>
|
||||||
<article>
|
<article class="h-entry">
|
||||||
<div class="article-head">
|
<h1 class="p-name">{title}</h1>
|
||||||
<h1 class="title">{title}</h1>
|
|
||||||
<em>Written by: {author}</em><br />
|
<em>Written by: {author}</em><br />
|
||||||
{minutesRead} <br />
|
{minutesRead}
|
||||||
Published on: <time>{lastModified}</time> <br />
|
<br />
|
||||||
|
Last Changed: <time class="dt-published">{lastModified}</time>
|
||||||
|
<br />
|
||||||
{image && <img width={720} height={360} src={image} alt="" />}
|
{image && <img width={720} height={360} src={image} alt="" />}
|
||||||
</div>
|
<div class="e-content">
|
||||||
<div class="article-body">
|
|
||||||
<hr />
|
<hr />
|
||||||
<slot />
|
<slot />
|
||||||
</div>
|
</div>
|
||||||
</article>
|
</article>
|
||||||
</main>
|
|
||||||
<div class="footer-container">
|
|
||||||
<Footer />
|
<Footer />
|
||||||
</div>
|
|
||||||
<style>
|
<style>
|
||||||
|
.meta {
|
||||||
|
display: none;
|
||||||
|
}
|
||||||
html {
|
html {
|
||||||
min-height: 100vh;
|
min-height: 100vh;
|
||||||
}
|
}
|
||||||
|
@ -51,5 +52,6 @@ const lastModified = dayjs()
|
||||||
margin-top: 10px;
|
margin-top: 10px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
</main>
|
||||||
</body>
|
</body>
|
||||||
</html>
|
</html>
|
||||||
|
|
|
@ -1,6 +1,9 @@
|
||||||
import rss from "@astrojs/rss";
|
import rss from "@astrojs/rss";
|
||||||
import { getCollection } from "astro:content";
|
import { getCollection } from "astro:content";
|
||||||
|
import sanitizeHtml from 'sanitize-html';
|
||||||
|
import MarkdownIt from 'markdown-it';
|
||||||
|
|
||||||
|
const parser = new MarkdownIt();
|
||||||
export async function GET(context) {
|
export async function GET(context) {
|
||||||
const blog = await getCollection("blog");
|
const blog = await getCollection("blog");
|
||||||
return rss({
|
return rss({
|
||||||
|
@ -11,7 +14,7 @@ export async function GET(context) {
|
||||||
title: post.data.title,
|
title: post.data.title,
|
||||||
pubDate: post.data.pubDate,
|
pubDate: post.data.pubDate,
|
||||||
description: post.data.description,
|
description: post.data.description,
|
||||||
customData: post.data.customData,
|
content: sanitizeHtml(parser.render(post.body)),
|
||||||
// Compute RSS link from post `slug`
|
// Compute RSS link from post `slug`
|
||||||
// This example assumes all posts are rendered as `/blog/[slug]` routes
|
// This example assumes all posts are rendered as `/blog/[slug]` routes
|
||||||
link: `/posts/${post.slug}/`,
|
link: `/posts/${post.slug}/`,
|
||||||
|
|
|
@ -1,15 +1,16 @@
|
||||||
---
|
---
|
||||||
import { getCollection } from 'astro:content';
|
import { getCollection } from "astro:content";
|
||||||
// 1. Generate a new path for every collection entry
|
// 1. Generate a new path for every collection entry
|
||||||
export async function getStaticPaths() {
|
export async function getStaticPaths() {
|
||||||
const blogEntries = await getCollection('blog');
|
const blogEntries = await getCollection("blog");
|
||||||
return blogEntries.map(entry => ({
|
return blogEntries.map((entry) => ({
|
||||||
params: { slug: entry.slug }, props: { entry },
|
params: { slug: entry.slug },
|
||||||
|
props: { entry },
|
||||||
}));
|
}));
|
||||||
}
|
}
|
||||||
// 2. For your template, you can get the entry directly from the prop
|
// 2. For your template, you can get the entry directly from the prop
|
||||||
const { entry } = Astro.props;
|
const { entry } = Astro.props;
|
||||||
const { Content } = await entry.render();
|
const { Content } = await entry.render();
|
||||||
---
|
---
|
||||||
<h1>{entry.data.title}</h1>
|
|
||||||
<Content />
|
<Content />
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
@import "https://unpkg.com/terminal.css@0.7.4/dist/terminal.min.css";
|
@import "https://unpkg.com/terminal.css@0.7.4/dist/terminal.min.css";
|
||||||
|
@import url("https://fonts.googleapis.com/css2?family=Recursive:wght,MONO@300..1000,1&display=swap");
|
||||||
|
|
||||||
:root {
|
:root {
|
||||||
/* Terminal Colors */
|
/* Terminal Colors */
|
||||||
|
@ -27,7 +28,7 @@
|
||||||
--astro-code-token-punctuation: var(--base05, --foreground);
|
--astro-code-token-punctuation: var(--base05, --foreground);
|
||||||
--astro-code-token-link: var(--base09, var(--orange, var(--cyan)));
|
--astro-code-token-link: var(--base09, var(--orange, var(--cyan)));
|
||||||
/*Fonts*/
|
/*Fonts*/
|
||||||
--mono-font-stack: monospace, sans-serif;
|
--mono-font-stack: "Recursive", monospace;
|
||||||
--font-stack: var(--mono-font-stack);
|
--font-stack: var(--mono-font-stack);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -276,3 +277,48 @@ ol ol ol ol ol ol ol ol ol ol {
|
||||||
width: 88px;
|
width: 88px;
|
||||||
height: 31px;
|
height: 31px;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
div[data-callout] {
|
||||||
|
padding: 0.75em;
|
||||||
|
color: var(--background-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-callout-type="todo"] {
|
||||||
|
background-color: var(--foreground);
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-callout-type="info"] {
|
||||||
|
background-color: var(--primary-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-callout-type="question"] {
|
||||||
|
background-color: var(--tertiary-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-callout-type="warn"] {
|
||||||
|
background-color: var(--base03, var(--yellow));
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-callout-type="fail"] {
|
||||||
|
background-color: var(--error-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-callout-type="error"] {
|
||||||
|
background-color: var(--error-color);
|
||||||
|
}
|
||||||
|
|
||||||
|
div[data-callout-title] {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 1.5em;
|
||||||
|
}
|
||||||
|
|
||||||
|
.palette {
|
||||||
|
margin: auto;
|
||||||
|
width: min-content;
|
||||||
|
}
|
||||||
|
|
||||||
|
.palette td {
|
||||||
|
border: none;
|
||||||
|
line-height: 1em;
|
||||||
|
max-width: 4em;
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Reference in a new issue