From 27b8c25724154231f708906a66b959743a72476e Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Mon, 10 Feb 2025 19:29:27 +0000 Subject: [PATCH 1/9] Add astro-expressive-code --- astro.config.ts | 14 +- package-lock.json | 363 +++++++++++++++++++++++++++++++++++++++------- package.json | 3 +- 3 files changed, 319 insertions(+), 61 deletions(-) diff --git a/astro.config.ts b/astro.config.ts index 477fa949..e3c71da2 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -6,6 +6,8 @@ import remarkCollapse from "remark-collapse"; import sitemap from "@astrojs/sitemap"; import { SITE } from "./src/config"; +import expressiveCode from "astro-expressive-code"; + // https://astro.build/config export default defineConfig({ // https://docs.astro.build/en/reference/configuration-reference/#site @@ -18,13 +20,9 @@ export default defineConfig({ // https://vitejs.dev/guide/env-and-mode.html#env-files //base: import.meta.env.DEV ? "." : "/emeraldjava-astro", //base: import.meta.env.VITE_BASE, - integrations: [ - tailwind({ - applyBaseStyles: false, - }), - react(), - sitemap(), - ], + integrations: [tailwind({ + applyBaseStyles: false, + }), react(), sitemap(), expressiveCode()], image: { // see https://docs.astro.build/en/reference/errors/missing-sharp/ service: passthroughImageService(), @@ -65,4 +63,4 @@ export default defineConfig({ // GitLab Pages requires exposed files to be located in a folder called "public". // So we're instructing Astro to put the static build output in a folder of that name. outDir: "./dist", -}); +}); \ No newline at end of file diff --git a/package-lock.json b/package-lock.json index 34104956..ad201b38 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,18 +1,19 @@ { "name": "emeraldjava.github.io", - "version": "2024.10.30", + "version": "2024.11.16", "lockfileVersion": 3, "requires": true, "packages": { "": { "name": "emeraldjava.github.io", - "version": "2024.10.30", + "version": "2024.11.16", "dependencies": { "@astrojs/check": "^0.9.3", "@astrojs/rss": "^4.0.7", "@giscus/react": "^3.0.0", "@resvg/resvg-js": "^2.6.2", "astro": "^4.16.3", + "astro-expressive-code": "^0.40.1", "fuse.js": "^7.0.0", "lodash.kebabcase": "^4.1.1", "remark-collapse": "^0.1.2", @@ -600,6 +601,15 @@ "node": ">=6.9.0" } }, + "node_modules/@ctrl/tinycolor": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/@ctrl/tinycolor/-/tinycolor-4.1.0.tgz", + "integrity": "sha512-WyOx8cJQ+FQus4Mm4uPIZA64gbk3Wxh0so5Lcii0aJifqwoVOlfFtorjLE0Hen4OYyHZMXDWqMmaQemBhgxFRQ==", + "license": "MIT", + "engines": { + "node": ">=14" + } + }, "node_modules/@emmetio/abbreviation": { "version": "2.3.3", "resolved": "https://registry.npmjs.org/@emmetio/abbreviation/-/abbreviation-2.3.3.tgz", @@ -1215,6 +1225,68 @@ "node": "^18.18.0 || ^20.9.0 || >=21.1.0" } }, + "node_modules/@expressive-code/core": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@expressive-code/core/-/core-0.40.1.tgz", + "integrity": "sha512-j71gxBepyzBgOtZomxzl8M90AjILf6hZarWFePDis7sTjqCwxWrtZEtTCafto8IOURG/ECZN0g7Ys4zExkNU7Q==", + "license": "MIT", + "dependencies": { + "@ctrl/tinycolor": "^4.0.4", + "hast-util-select": "^6.0.2", + "hast-util-to-html": "^9.0.1", + "hast-util-to-text": "^4.0.1", + "hastscript": "^9.0.0", + "postcss": "^8.4.38", + "postcss-nested": "^6.0.1", + "unist-util-visit": "^5.0.0", + "unist-util-visit-parents": "^6.0.1" + } + }, + "node_modules/@expressive-code/core/node_modules/hastscript": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/hastscript/-/hastscript-9.0.0.tgz", + "integrity": "sha512-jzaLBGavEDKHrc5EfFImKN7nZKKBdSLIdGvCwDZ9TfzbF2ffXiov8CKE445L2Z1Ek2t/m4SKQ2j6Ipv7NyUolw==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "comma-separated-tokens": "^2.0.0", + "hast-util-parse-selector": "^4.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, + "node_modules/@expressive-code/plugin-frames": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-frames/-/plugin-frames-0.40.1.tgz", + "integrity": "sha512-qV7BIdTQ9nJ/eLHaJlzMvUq5aqAoZKO3PLFzBVop/q0d0m5rWpwWncIQ8qkufQDabmq2m38PRRWxKgx5FkJ2Rg==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.40.1" + } + }, + "node_modules/@expressive-code/plugin-shiki": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-shiki/-/plugin-shiki-0.40.1.tgz", + "integrity": "sha512-N5oXhLv5DwLGXmLwJtwMzrfnZPWJl4pHRR5mfDoqK1+NxptdVaaQ0nEjgw13Y5ID/O5Bbze5YcOyph2K52BBrQ==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.40.1", + "shiki": "^1.26.1" + } + }, + "node_modules/@expressive-code/plugin-text-markers": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/@expressive-code/plugin-text-markers/-/plugin-text-markers-0.40.1.tgz", + "integrity": "sha512-LsirF7M4F2yWgrFXEocD74F/MaVXsOsHVsRxBLhXQJemSSkWkDp/EZPt//OaqQ8ExnqWZ2lH7E1/KiN46unKjg==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.40.1" + } + }, "node_modules/@giscus/react": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/@giscus/react/-/react-3.0.0.tgz", @@ -1755,54 +1827,72 @@ ] }, "node_modules/@shikijs/core": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.22.2.tgz", - "integrity": "sha512-bvIQcd8BEeR1yFvOYv6HDiyta2FFVePbzeowf5pPS1avczrPK+cjmaxxh0nx5QzbON7+Sv0sQfQVciO7bN72sg==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/core/-/core-1.29.2.tgz", + "integrity": "sha512-vju0lY9r27jJfOY4Z7+Rt/nIOjzJpZ3y+nYpqtUZInVoXQ/TJZcfGnNOGnKjFdVZb8qexiCuSlZRKcGfhhTTZQ==", "license": "MIT", "dependencies": { - "@shikijs/engine-javascript": "1.22.2", - "@shikijs/engine-oniguruma": "1.22.2", - "@shikijs/types": "1.22.2", - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4", - "hast-util-to-html": "^9.0.3" + "hast-util-to-html": "^9.0.4" } }, "node_modules/@shikijs/engine-javascript": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.22.2.tgz", - "integrity": "sha512-iOvql09ql6m+3d1vtvP8fLCVCK7BQD1pJFmHIECsujB0V32BJ0Ab6hxk1ewVSMFA58FI0pR2Had9BKZdyQrxTw==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-javascript/-/engine-javascript-1.29.2.tgz", + "integrity": "sha512-iNEZv4IrLYPv64Q6k7EPpOCE/nuvGiKl7zxdq0WFuRPF5PAE9PRo2JGq/d8crLusM59BRemJ4eOqrFrC4wiQ+A==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.22.2", - "@shikijs/vscode-textmate": "^9.3.0", - "oniguruma-to-js": "0.4.3" + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", + "oniguruma-to-es": "^2.2.0" } }, "node_modules/@shikijs/engine-oniguruma": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.22.2.tgz", - "integrity": "sha512-GIZPAGzQOy56mGvWMoZRPggn0dTlBf1gutV5TdceLCZlFNqWmuc7u+CzD0Gd9vQUTgLbrt0KLzz6FNprqYAxlA==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/engine-oniguruma/-/engine-oniguruma-1.29.2.tgz", + "integrity": "sha512-7iiOx3SG8+g1MnlzZVDYiaeHe7Ez2Kf2HrJzdmGwkRisT7r4rak0e655AcM/tF9JG/kg5fMNYlLLKglbN7gBqA==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1" + } + }, + "node_modules/@shikijs/langs": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/langs/-/langs-1.29.2.tgz", + "integrity": "sha512-FIBA7N3LZ+223U7cJDUYd5shmciFQlYkFXlkKVaHsCPgfVLiO+e12FmQE6Tf9vuyEsFe3dIl8qGWKXgEHL9wmQ==", + "license": "MIT", + "dependencies": { + "@shikijs/types": "1.29.2" + } + }, + "node_modules/@shikijs/themes": { + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/themes/-/themes-1.29.2.tgz", + "integrity": "sha512-i9TNZlsq4uoyqSbluIcZkmPL9Bfi3djVxRnofUHwvx/h6SRW3cwgBC5SML7vsDcWyukY0eCzVN980rqP6qNl9g==", "license": "MIT", "dependencies": { - "@shikijs/types": "1.22.2", - "@shikijs/vscode-textmate": "^9.3.0" + "@shikijs/types": "1.29.2" } }, "node_modules/@shikijs/types": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.22.2.tgz", - "integrity": "sha512-NCWDa6LGZqTuzjsGfXOBWfjS/fDIbDdmVDug+7ykVe1IKT4c1gakrvlfFYp5NhAXH/lyqLM8wsAPo5wNy73Feg==", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/@shikijs/types/-/types-1.29.2.tgz", + "integrity": "sha512-VJjK0eIijTZf0QSTODEXCqinjBn0joAHQ+aPSBzrv4O2d/QSbsMw+ZeSRx03kV34Hy7NzUvV/7NqfYGRLrASmw==", "license": "MIT", "dependencies": { - "@shikijs/vscode-textmate": "^9.3.0", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, "node_modules/@shikijs/vscode-textmate": { - "version": "9.3.0", - "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-9.3.0.tgz", - "integrity": "sha512-jn7/7ky30idSkd/O5yDBfAnVt+JJpepofP/POZ1iMOxK59cOfqIgg/Dj0eFsjOTMw+4ycJN0uhZH/Eb0bs/EUA==", + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/@shikijs/vscode-textmate/-/vscode-textmate-10.0.1.tgz", + "integrity": "sha512-fTIQwLF+Qhuws31iw7Ncl1R3HUDtGwIipiJ9iU+UsDUwMhegFcQKQHd51nZjb7CArq0MvON8rbgCGQYWHUKAdg==", "license": "MIT" }, "node_modules/@shuding/opentype.js": { @@ -2653,6 +2743,18 @@ "node": ">=8" } }, + "node_modules/astro-expressive-code": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/astro-expressive-code/-/astro-expressive-code-0.40.1.tgz", + "integrity": "sha512-dQ47XhgtxuRTiKQrZOJKdebMuxvvTBR89U439EHzLP6KR45IILFlGDihGQp3//1aUjj4nwpbINSzms1heJ7vmQ==", + "license": "MIT", + "dependencies": { + "rehype-expressive-code": "^0.40.1" + }, + "peerDependencies": { + "astro": "^4.0.0-beta || ^5.0.0-beta || ^3.3.0" + } + }, "node_modules/astrojs-compiler-sync": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/astrojs-compiler-sync/-/astrojs-compiler-sync-1.0.0.tgz", @@ -2746,6 +2848,16 @@ "node": ">= 0.4" } }, + "node_modules/bcp-47-match": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/bcp-47-match/-/bcp-47-match-2.0.3.tgz", + "integrity": "sha512-JtTezzbAibu8G0R9op9zb3vcWZd9JF6M0xOYGPn0fNCd7wOpRB1mU2mH9T8gaBGbAAyIIVgB2G7xG0GP98zMAQ==", + "license": "MIT", + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/binary-extensions": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", @@ -2757,6 +2869,12 @@ "url": "https://github.com/sponsors/sindresorhus" } }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "license": "ISC" + }, "node_modules/boxen": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/boxen/-/boxen-8.0.1.tgz", @@ -3249,6 +3367,22 @@ "node": ">=16" } }, + "node_modules/css-selector-parser": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/css-selector-parser/-/css-selector-parser-3.0.5.tgz", + "integrity": "sha512-3itoDFbKUNx1eKmVpYMFyqKX04Ww9osZ+dLgrk6GEv6KMVeXUhUnp4I5X+evw+u3ZxVU6RFXSSRxlTeMh8bA+g==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/mdevils" + }, + { + "type": "patreon", + "url": "https://patreon.com/mdevils" + } + ], + "license": "MIT" + }, "node_modules/css-to-react-native": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-3.2.0.tgz", @@ -3389,6 +3523,19 @@ "node": ">=8" } }, + "node_modules/direction": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/direction/-/direction-2.0.1.tgz", + "integrity": "sha512-9S6m9Sukh1cZNknO1CWAr2QAWsbKLafQiyM5gZ7VgXHeuaoUwffKN4q6NC4A/Mf9iiPlOXQEKW/Mv/mh9/3YFA==", + "license": "MIT", + "bin": { + "direction": "cli.js" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/wooorm" + } + }, "node_modules/dlv": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", @@ -3435,6 +3582,12 @@ "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.3.0.tgz", "integrity": "sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==" }, + "node_modules/emoji-regex-xs": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex-xs/-/emoji-regex-xs-1.0.0.tgz", + "integrity": "sha512-LRlerrMYoIDrT6jgpeZ2YYl/L8EulRTt5hQcYjy5AInh7HWXKimpqx68aknBFpGL2+/IcogTcaydJEgaTmOpDg==", + "license": "MIT" + }, "node_modules/entities": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", @@ -3929,6 +4082,18 @@ "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-5.0.1.tgz", "integrity": "sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==" }, + "node_modules/expressive-code": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/expressive-code/-/expressive-code-0.40.1.tgz", + "integrity": "sha512-jBsTRX+MPsqiqYQsE9vRXMiAkUafU11j2zuWAaOX9vubLutNB0er8c0FJWeudVDH5D52V4Lf4vTIqbOE54PUcQ==", + "license": "MIT", + "dependencies": { + "@expressive-code/core": "^0.40.1", + "@expressive-code/plugin-frames": "^0.40.1", + "@expressive-code/plugin-shiki": "^0.40.1", + "@expressive-code/plugin-text-markers": "^0.40.1" + } + }, "node_modules/extend": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", @@ -4320,6 +4485,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-has-property": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/hast-util-has-property/-/hast-util-has-property-3.0.0.tgz", + "integrity": "sha512-MNilsvEKLFpV604hwfhVStK0usFY/QmM5zX16bo7EjnAEGofr5YyI37kzopBlZJkHD4t887i+q/C8/tr5Q94cA==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-is-element": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/hast-util-is-element/-/hast-util-is-element-3.0.0.tgz", @@ -4371,10 +4549,37 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-select": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/hast-util-select/-/hast-util-select-6.0.3.tgz", + "integrity": "sha512-OVRQlQ1XuuLP8aFVLYmC2atrfWHS5UD3shonxpnyrjcCkwtvmt/+N6kYJdcY4mkMJhxp4kj2EFIxQ9kvkkt/eQ==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0", + "@types/unist": "^3.0.0", + "bcp-47-match": "^2.0.0", + "comma-separated-tokens": "^2.0.0", + "css-selector-parser": "^3.0.0", + "devlop": "^1.0.0", + "direction": "^2.0.0", + "hast-util-has-property": "^3.0.0", + "hast-util-to-string": "^3.0.0", + "hast-util-whitespace": "^3.0.0", + "nth-check": "^2.0.0", + "property-information": "^6.0.0", + "space-separated-tokens": "^2.0.0", + "unist-util-visit": "^5.0.0", + "zwitch": "^2.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-html": { - "version": "9.0.3", - "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.3.tgz", - "integrity": "sha512-M17uBDzMJ9RPCqLMO92gNNUDuBSq10a25SDBI08iCCxmorf4Yy6sYHK57n9WAbRAAaU+DuR4W6GN9K4DFZesYg==", + "version": "9.0.4", + "resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-9.0.4.tgz", + "integrity": "sha512-wxQzXtdbhiwGAUKrnQJXlOPmHnEehzphwkK7aluUPQ+lEc1xefC8pblMgpp2w5ldBTEfveRIrADcrhGIWrlTDA==", "license": "MIT", "dependencies": { "@types/hast": "^3.0.0", @@ -4413,6 +4618,19 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/hast-util-to-string": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/hast-util-to-string/-/hast-util-to-string-3.0.1.tgz", + "integrity": "sha512-XelQVTDWvqcl3axRfI0xSeoVKzyIFPwsAGSLIsKdJKQMXDYJS4WYrBNF/8J7RdhIcFI2BOHgAifggsvsxp/3+A==", + "license": "MIT", + "dependencies": { + "@types/hast": "^3.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/unified" + } + }, "node_modules/hast-util-to-text": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/hast-util-to-text/-/hast-util-to-text-4.0.2.tgz", @@ -6126,6 +6344,18 @@ "node": ">=0.10.0" } }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "license": "BSD-2-Clause", + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, "node_modules/object-assign": { "version": "4.1.1", "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", @@ -6142,16 +6372,15 @@ "node": ">= 6" } }, - "node_modules/oniguruma-to-js": { - "version": "0.4.3", - "resolved": "https://registry.npmjs.org/oniguruma-to-js/-/oniguruma-to-js-0.4.3.tgz", - "integrity": "sha512-X0jWUcAlxORhOqqBREgPMgnshB7ZGYszBNspP+tS9hPD3l13CdaXcHbgImoHUHlrvGx/7AvFEkTRhAGYh+jzjQ==", + "node_modules/oniguruma-to-es": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/oniguruma-to-es/-/oniguruma-to-es-2.3.0.tgz", + "integrity": "sha512-bwALDxriqfKGfUufKGGepCzu9x7nJQuoRoAFp4AnwehhC2crqrDIAP/uN2qdlsAvSMpeRC3+Yzhqc7hLmle5+g==", "license": "MIT", "dependencies": { - "regex": "^4.3.2" - }, - "funding": { - "url": "https://github.com/sponsors/antfu" + "emoji-regex-xs": "^1.0.0", + "regex": "^5.1.1", + "regex-recursion": "^5.1.1" } }, "node_modules/optionator": { @@ -6945,9 +7174,28 @@ } }, "node_modules/regex": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/regex/-/regex-4.3.3.tgz", - "integrity": "sha512-r/AadFO7owAq1QJVeZ/nq9jNS1vyZt+6t1p/E59B56Rn2GCya+gr1KSyOzNL/er+r+B7phv5jG2xU2Nz1YkmJg==", + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex/-/regex-5.1.1.tgz", + "integrity": "sha512-dN5I359AVGPnwzJm2jN1k0W9LPZ+ePvoOeVMMfqIMFz53sSwXkxaJoxr50ptnsC771lK95BnTrVSZxq0b9yCGw==", + "license": "MIT", + "dependencies": { + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-recursion": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/regex-recursion/-/regex-recursion-5.1.1.tgz", + "integrity": "sha512-ae7SBCbzVNrIjgSbh7wMznPcQel1DNlDtzensnFxpiNpXt1U2ju/bHugH422r+4LAVS1FpW1YCwilmnNsjum9w==", + "license": "MIT", + "dependencies": { + "regex": "^5.1.1", + "regex-utilities": "^2.3.0" + } + }, + "node_modules/regex-utilities": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/regex-utilities/-/regex-utilities-2.3.0.tgz", + "integrity": "sha512-8VhliFJAWRaUiVvREIiW2NXXTmHs4vMNnSzuJVhscgmGav3g9VDxLrQndI3dZZVVdp0ZO/5v0xmX516/7M9cng==", "license": "MIT" }, "node_modules/rehype": { @@ -6966,6 +7214,15 @@ "url": "https://opencollective.com/unified" } }, + "node_modules/rehype-expressive-code": { + "version": "0.40.1", + "resolved": "https://registry.npmjs.org/rehype-expressive-code/-/rehype-expressive-code-0.40.1.tgz", + "integrity": "sha512-EjmhGHcgmcPoIsb4M6vm2FQQDUctdcgFFiKGCYtPJuMpzr1q+ChCNsc443MaE412MyAgL6Q/XUB7I56Mcl6bnw==", + "license": "MIT", + "dependencies": { + "expressive-code": "^0.40.1" + } + }, "node_modules/rehype-parse": { "version": "9.0.1", "resolved": "https://registry.npmjs.org/rehype-parse/-/rehype-parse-9.0.1.tgz", @@ -7436,16 +7693,18 @@ } }, "node_modules/shiki": { - "version": "1.22.2", - "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.22.2.tgz", - "integrity": "sha512-3IZau0NdGKXhH2bBlUk4w1IHNxPh6A5B2sUpyY+8utLu2j/h1QpFkAaUA1bAMxOWWGtTWcAh531vnS4NJKS/lA==", - "license": "MIT", - "dependencies": { - "@shikijs/core": "1.22.2", - "@shikijs/engine-javascript": "1.22.2", - "@shikijs/engine-oniguruma": "1.22.2", - "@shikijs/types": "1.22.2", - "@shikijs/vscode-textmate": "^9.3.0", + "version": "1.29.2", + "resolved": "https://registry.npmjs.org/shiki/-/shiki-1.29.2.tgz", + "integrity": "sha512-njXuliz/cP+67jU2hukkxCNuH1yUi4QfdZZY+sMr5PPrIyXSu5iTb/qYC4BiWWB0vZ+7TbdvYUCeL23zpwCfbg==", + "license": "MIT", + "dependencies": { + "@shikijs/core": "1.29.2", + "@shikijs/engine-javascript": "1.29.2", + "@shikijs/engine-oniguruma": "1.29.2", + "@shikijs/langs": "1.29.2", + "@shikijs/themes": "1.29.2", + "@shikijs/types": "1.29.2", + "@shikijs/vscode-textmate": "^10.0.1", "@types/hast": "^3.0.4" } }, diff --git a/package.json b/package.json index f71e36a8..698f6600 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "emeraldjava.github.io", - "version": "2024.11.16", + "version": "2024.02.10", "scripts": { "dev": "astro dev", "start": "astro dev", @@ -19,6 +19,7 @@ "@giscus/react": "^3.0.0", "@resvg/resvg-js": "^2.6.2", "astro": "^4.16.3", + "astro-expressive-code": "^0.40.1", "fuse.js": "^7.0.0", "lodash.kebabcase": "^4.1.1", "remark-collapse": "^0.1.2", From 2c8d29ca6533589d3b373d193ac379a20d47b816 Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Mon, 10 Feb 2025 19:33:41 +0000 Subject: [PATCH 2/9] Add example post woth expressive plugin --- .../blog/2025/2025-02-10-expressive-code.md | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) create mode 100644 src/content/blog/2025/2025-02-10-expressive-code.md diff --git a/src/content/blog/2025/2025-02-10-expressive-code.md b/src/content/blog/2025/2025-02-10-expressive-code.md new file mode 100644 index 00000000..1e93a41b --- /dev/null +++ b/src/content/blog/2025/2025-02-10-expressive-code.md @@ -0,0 +1,19 @@ +--- +title: Enable Expressive Code Plugin +author: me +pubDatetime: 2025-02-10T15:22:00Z +slug: 2025-02-10-expressive-code +featured: true +draft: false +tags: + - astro +description: Enable Expressive Code Plugin +--- + +https://expressive-code.com/installation/#astro + +## Example + +```js +console.log('This code is syntax highlighted!') +``` \ No newline at end of file From 3438f930934ab2f898ac5a3950f07e96af7a123c Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Mon, 10 Feb 2025 19:39:16 +0000 Subject: [PATCH 3/9] Remove lint from ci build --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 48e1c6cd..2475b174 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,9 +32,6 @@ jobs: - name: "📦 Install dependencies" run: npm ci - - name: "🔎 Lint code" - run: npm run lint - - name: "📝 Checking code format" run: npm run format:check From 9fc8c4565c6126df57f993ef356d7e58db915cfd Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Tue, 11 Feb 2025 08:43:53 +0000 Subject: [PATCH 4/9] lint issues --- astro.config.ts | 2 +- src/components/Comments.tsx | 39 +++++++++--------- src/components/ShareLinks.astro | 70 ++++++++++++++++----------------- src/config.ts | 2 +- src/layouts/Layout.astro | 2 +- 5 files changed, 56 insertions(+), 59 deletions(-) diff --git a/astro.config.ts b/astro.config.ts index e3c71da2..b2991cf2 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -4,7 +4,7 @@ import react from "@astrojs/react"; import remarkToc from "remark-toc"; import remarkCollapse from "remark-collapse"; import sitemap from "@astrojs/sitemap"; -import { SITE } from "./src/config"; +//import { SITE } from "./src/config"; import expressiveCode from "astro-expressive-code"; diff --git a/src/components/Comments.tsx b/src/components/Comments.tsx index 5df7f93b..db69e634 100644 --- a/src/components/Comments.tsx +++ b/src/components/Comments.tsx @@ -1,25 +1,22 @@ -import Giscus, { type Theme } from "@giscus/react"; +//import Giscus, { type Theme } from "@giscus/react"; //import { GISCUS } from "@config"; -import { useEffect, useState } from "react"; - -interface CommentsProps { - lightTheme?: Theme; - darkTheme?: Theme; -} - -export default function Comments({ - lightTheme = "light", - darkTheme = "dark", - }: CommentsProps) { - const [theme, setTheme] = useState(() => { - const currentTheme = localStorage.getItem("theme"); - const browserTheme = window.matchMedia("(prefers-color-scheme: dark)") - .matches - ? "dark" - : "light"; - - return currentTheme || browserTheme; - }); +import { useEffect } from "react"; + +// interface CommentsProps { +// lightTheme?: Theme; +// darkTheme?: Theme; +// } + +export default function Comments() { + // const [theme, setTheme] = useState(() => { + // const currentTheme = localStorage.getItem("theme"); + // const browserTheme = window.matchMedia("(prefers-color-scheme: dark)") + // .matches + // ? "dark" + // : "light"; + + // return currentTheme || browserTheme; + // }); useEffect(() => { const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); diff --git a/src/components/ShareLinks.astro b/src/components/ShareLinks.astro index 48d11fa3..286216ff 100644 --- a/src/components/ShareLinks.astro +++ b/src/components/ShareLinks.astro @@ -1,41 +1,41 @@ --- -import LinkButton from "./LinkButton.astro"; -import socialIcons from "@assets/socialIcons"; +//import LinkButton from "./LinkButton.astro"; +//import socialIcons from "@assets/socialIcons"; -const URL = Astro.url; +//const URL = Astro.url; -const shareLinks = [ - { - name: "WhatsApp", - href: "https://wa.me/?text=", - linkTitle: `Share this post via WhatsApp`, - }, - { - name: "Facebook", - href: "https://www.facebook.com/sharer.php?u=", - linkTitle: `Share this post on Facebook`, - }, - { - name: "Twitter", - href: "https://twitter.com/intent/tweet?url=", - linkTitle: `Tweet this post`, - }, - { - name: "Telegram", - href: "https://t.me/share/url?url=", - linkTitle: `Share this post via Telegram`, - }, - { - name: "Pinterest", - href: "https://pinterest.com/pin/create/button/?url=", - linkTitle: `Share this post on Pinterest`, - }, - { - name: "Mail", - href: "mailto:?subject=See%20this%20post&body=", - linkTitle: `Share this post via email`, - }, -] as const; +// const shareLinks = [ +// { +// name: "WhatsApp", +// href: "https://wa.me/?text=", +// linkTitle: `Share this post via WhatsApp`, +// }, +// { +// name: "Facebook", +// href: "https://www.facebook.com/sharer.php?u=", +// linkTitle: `Share this post on Facebook`, +// }, +// { +// name: "Twitter", +// href: "https://twitter.com/intent/tweet?url=", +// linkTitle: `Tweet this post`, +// }, +// { +// name: "Telegram", +// href: "https://t.me/share/url?url=", +// linkTitle: `Share this post via Telegram`, +// }, +// { +// name: "Pinterest", +// href: "https://pinterest.com/pin/create/button/?url=", +// linkTitle: `Share this post on Pinterest`, +// }, +// { +// name: "Mail", +// href: "mailto:?subject=See%20this%20post&body=", +// linkTitle: `Share this post via email`, +// }, +// ] as const; ---
diff --git a/src/config.ts b/src/config.ts index f5717f01..7a3041aa 100644 --- a/src/config.ts +++ b/src/config.ts @@ -1,5 +1,5 @@ import type { Site, SocialObjects } from "./types"; -import type { GiscusProps } from "@giscus/react"; +//import type { GiscusProps } from "@giscus/react"; export const SITE: Site = { website: "https://emeraldjava.github.io/", // replace this with your deployed domain diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index e7acaa0e..f539ca0b 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -61,7 +61,7 @@ const structuredData = { From 2d6ee0e96814cbee976fd2ae2225f84c3572490f Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Tue, 11 Feb 2025 08:44:12 +0000 Subject: [PATCH 5/9] lint issues --- src/pages/posts/[slug]/og.png.ts | 144 +++++++++++++++++++++++++++++++ 1 file changed, 144 insertions(+) create mode 100644 src/pages/posts/[slug]/og.png.ts diff --git a/src/pages/posts/[slug]/og.png.ts b/src/pages/posts/[slug]/og.png.ts new file mode 100644 index 00000000..c0d5fd10 --- /dev/null +++ b/src/pages/posts/[slug]/og.png.ts @@ -0,0 +1,144 @@ +import { getCollection, type CollectionEntry } from 'astro:content'; +import fs from 'fs'; +import path from 'path'; +import { ImageResponse } from '@vercel/og'; +import OpenSans from '../../../lib/OpenSans-Regular.ttf' + +interface Props { + params: { slug: string }; + props: { post: CollectionEntry<'blog'> }; +} + +export async function GET({ props }: Props) { + const { post } = props; + + // using custom font files + // const DmSansBold = fs.readFileSync(path.resolve('./fonts/DMSans-Bold.ttf')); + // const DmSansReqular = fs.readFileSync( + // path.resolve('./fonts/DMSans-Regular.ttf'), + // ); + + // post cover with Image is pretty tricky for dev and build phase + const postCover = fs.readFileSync( + process.env.NODE_ENV === 'development' + ? path.resolve( + post.data.cover.src.replace(/\?.*/, '').replace('/@fs', ''), + ) + : path.resolve(post.data.cover.src.replace('/', 'dist/')), + ); + + // Astro doesn't support tsx endpoints so usign React-element objects + const html = { + type: 'div', + props: { + children: [ + { + type: 'div', + props: { + // using tailwind + tw: 'w-[200px] h-[200px] flex rounded-3xl overflow-hidden', + children: [ + { + type: 'img', + props: { + src: postCover.buffer, + }, + }, + ], + }, + }, + { + type: 'div', + props: { + tw: 'pl-10 shrink flex', + children: [ + { + type: 'div', + props: { + style: { + fontSize: '48px', + fontFamily: 'DM Sans Bold', + }, + children: post.data.title, + }, + }, + ], + }, + }, + { + type: 'div', + props: { + tw: 'absolute right-[40px] bottom-[40px] flex items-center', + children: [ + { + type: 'div', + props: { + tw: 'text-blue-600 text-3xl', + style: { + fontFamily: 'DM Sans Bold', + }, + children: 'Dzmitry Kozhukh', + }, + }, + { + type: 'div', + props: { + tw: 'px-2 text-3xl', + style: { + fontSize: '30px', + }, + children: '|', + }, + }, + { + type: 'div', + props: { + tw: 'text-3xl', + children: 'Blog', + }, + }, + ], + }, + }, + ], + tw: 'w-full h-full flex items-center justify-center relative px-22', + style: { + background: '#f7f8e8', + fontFamily: 'DM Sans Regular', + }, + }, + }; + + return new ImageResponse(html, { + width: 1200, + height: 600, + fonts: [ + { + name: 'Open Sans', + data: Buffer.from(OpenSans), + style: 'normal' + } + ], + // fonts: [ + // { + // name: 'DM Sans Bold', + // data: DmSansBold.buffer, + // style: 'normal', + // }, + // { + // name: 'DM Sans Regular', + // data: DmSansReqular.buffer, + // style: 'normal', + // }, + // ], + }); +} + +// to generate an image for each blog posts in a collection +export async function getStaticPaths() { + const blogPosts = await getCollection('blog'); + return blogPosts.map((post) => ({ + params: { slug: post.slug }, + props: { post }, + })); +} \ No newline at end of file From 5ca0f50f8598f0c356f5900dcea78246c2055a77 Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Tue, 11 Feb 2025 08:46:11 +0000 Subject: [PATCH 6/9] Drop code formatter --- .github/workflows/ci.yml | 3 --- 1 file changed, 3 deletions(-) diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 2475b174..e1607ac9 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -32,8 +32,5 @@ jobs: - name: "📦 Install dependencies" run: npm ci - - name: "📝 Checking code format" - run: npm run format:check - - name: "🚀 Build the project" run: npm run build From 48c7bb060fc8e77ca256d28ad67861050b8f2e7f Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Tue, 11 Feb 2025 09:05:09 +0000 Subject: [PATCH 7/9] Disable giscuss comments. --- .../{Comments.tsx => Comments.tsx.txt} | 39 ++++++++++--------- src/layouts/PostDetails.astro | 6 ++- .../posts/[slug]/{og.png.ts => og.png.ts.txt} | 0 3 files changed, 24 insertions(+), 21 deletions(-) rename src/components/{Comments.tsx => Comments.tsx.txt} (56%) rename src/pages/posts/[slug]/{og.png.ts => og.png.ts.txt} (100%) diff --git a/src/components/Comments.tsx b/src/components/Comments.tsx.txt similarity index 56% rename from src/components/Comments.tsx rename to src/components/Comments.tsx.txt index db69e634..3dcfb1d3 100644 --- a/src/components/Comments.tsx +++ b/src/components/Comments.tsx.txt @@ -1,22 +1,23 @@ -//import Giscus, { type Theme } from "@giscus/react"; -//import { GISCUS } from "@config"; -import { useEffect } from "react"; - -// interface CommentsProps { -// lightTheme?: Theme; -// darkTheme?: Theme; -// } - -export default function Comments() { - // const [theme, setTheme] = useState(() => { - // const currentTheme = localStorage.getItem("theme"); - // const browserTheme = window.matchMedia("(prefers-color-scheme: dark)") - // .matches - // ? "dark" - // : "light"; - - // return currentTheme || browserTheme; - // }); +import { useEffect, useState } from "react"; + +interface CommentsProps { + lightTheme?: Theme; + darkTheme?: Theme; +} + +export default function Comments({ + lightTheme = "light", + darkTheme = "dark", + }: CommentsProps) { + const [theme, setTheme] = useState(() => { + const currentTheme = localStorage.getItem("theme"); + const browserTheme = window.matchMedia("(prefers-color-scheme: dark)") + .matches + ? "dark" + : "light"; + + return currentTheme || browserTheme; + }); useEffect(() => { const mediaQuery = window.matchMedia("(prefers-color-scheme: dark)"); diff --git a/src/layouts/PostDetails.astro b/src/layouts/PostDetails.astro index 518562b0..ffdfaf06 100644 --- a/src/layouts/PostDetails.astro +++ b/src/layouts/PostDetails.astro @@ -7,7 +7,6 @@ import Datetime from "@components/Datetime"; import type { CollectionEntry } from "astro:content"; import { slugifyStr } from "@utils/slugify"; import ShareLinks from "@components/ShareLinks.astro"; -import Comments from "@components/Comments"; import { SITE } from "@config"; export interface Props { @@ -181,8 +180,11 @@ const nextPost = + https://github.com/satnaing/astro-paper/blob/main/src/content/blog/how-to-integrate-giscus-comments.md + --> + diff --git a/src/pages/posts/[slug]/og.png.ts b/src/pages/posts/[slug]/og.png.ts.txt similarity index 100% rename from src/pages/posts/[slug]/og.png.ts rename to src/pages/posts/[slug]/og.png.ts.txt From 1b68b9445f92298d3c594ad95433803b21c38302 Mon Sep 17 00:00:00 2001 From: emeraldjava Date: Tue, 11 Feb 2025 09:06:34 +0000 Subject: [PATCH 8/9] Code formatter --- astro.config.ts | 13 +++++++++---- src/assets/socialIcons.ts | 10 ++++++---- src/config.ts | 11 +++++++---- src/content/blog/2022/2022-02-22-updates.md | 4 ++-- .../blog/2022/2022-09-02-ship-it-con-2022.md | 9 ++++----- .../blog/2022/2022-09-14-docker-meetup-dublin.md | 3 ++- .../blog/2022/2022-11-05-hello-mastodon-ie.md | 1 - .../blog/2022/2022-11-20-synology-home-assistent.md | 8 ++++---- src/content/blog/2024/2024-06-22-GA.md | 2 +- src/content/blog/2025/2025-02-10-expressive-code.md | 4 ++-- src/layouts/Layout.astro | 11 +++++++---- src/layouts/PostDetails.astro | 1 - 12 files changed, 44 insertions(+), 33 deletions(-) diff --git a/astro.config.ts b/astro.config.ts index b2991cf2..1c1c2afa 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -20,9 +20,14 @@ export default defineConfig({ // https://vitejs.dev/guide/env-and-mode.html#env-files //base: import.meta.env.DEV ? "." : "/emeraldjava-astro", //base: import.meta.env.VITE_BASE, - integrations: [tailwind({ - applyBaseStyles: false, - }), react(), sitemap(), expressiveCode()], + integrations: [ + tailwind({ + applyBaseStyles: false, + }), + react(), + sitemap(), + expressiveCode(), + ], image: { // see https://docs.astro.build/en/reference/errors/missing-sharp/ service: passthroughImageService(), @@ -63,4 +68,4 @@ export default defineConfig({ // GitLab Pages requires exposed files to be located in a folder called "public". // So we're instructing Astro to put the static build output in a folder of that name. outDir: "./dist", -}); \ No newline at end of file +}); diff --git a/src/assets/socialIcons.ts b/src/assets/socialIcons.ts index fb7c443f..d4432d11 100644 --- a/src/assets/socialIcons.ts +++ b/src/assets/socialIcons.ts @@ -206,18 +206,20 @@ const socialIcons = { q-43 -8 -67 -30q-29 -25 -35 -72q-2 -14 -2 -29l25 6q31 6 65 10q48 7 93 9q42 2 92 -2q32 -2 88 -9t107 -30q49 -23 81.5 -54.5t38.5 -63.5q9 -45 13 -109q4 -46 5 -97v-41q0 -56 -14 -103q-11 -40 -32 -73q-16 -26 -38 -47q-15 -15 -32 -25q-12 -8 -14 -8 q-46 -22 -127 -33q-74 -10 -166 -11h-3zM367 267q73 0 109 56l24 39l24 -39q36 -56 109 -56q63 0 101 43t38 117v239h-95v-232q0 -74 -61 -74q-69 0 -69 88v127h-94v-127q0 -88 -69 -88q-61 0 -61 74v232h-95v-239q0 -74 38 -117t101 -43z" /> `, - Bluesky: '\n' + + Bluesky: + '\n' + ' \n' + ' \n' + - '', - StackOverflow: '\n' + + "", + StackOverflow: + '\n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + ' \n' + - '' + "", }; export default socialIcons; diff --git a/src/config.ts b/src/config.ts index 7a3041aa..ebd1a3d4 100644 --- a/src/config.ts +++ b/src/config.ts @@ -38,22 +38,25 @@ export const SOCIALS: SocialObjects = [ href: "https://github.com/emeraldjava", linkTitle: "${SITE.title} on Github", active: true, - }, { + }, + { name: "LinkedIn", href: "https://www.linkedin.com/in/paultoconnell/", linkTitle: "${SITE.title} on LinkedIn", active: true, - }, { + }, + { name: "StackOverflow", href: "https://stackoverflow.com/users/55794/emeraldjava", linkTitle: "${SITE.title} on StackOverflow", active: true, - }, { + }, + { name: "Bluesky", href: "https://bsky.app/profile/emeraldjava.bsky.social", linkTitle: "${SITE.title} on Bluesky", active: true, - } + }, ]; // export const GISCUS: GiscusProps = { diff --git a/src/content/blog/2022/2022-02-22-updates.md b/src/content/blog/2022/2022-02-22-updates.md index 40bb4c92..7fc73a2b 100644 --- a/src/content/blog/2022/2022-02-22-updates.md +++ b/src/content/blog/2022/2022-02-22-updates.md @@ -9,7 +9,7 @@ tags: [] # emeraldjava cv -Have updated the CV to reflect recent experience. Needed to updated the github action and other npm versions. +Have updated the CV to reflect recent experience. Needed to updated the github action and other npm versions. Added the caffeine theme and need to see if the resumefodder word template can be converted. @@ -19,4 +19,4 @@ Updated the gatsby versions # Web Assembly -Need to play with technology and add an app to this site. \ No newline at end of file +Need to play with technology and add an app to this site. diff --git a/src/content/blog/2022/2022-09-02-ship-it-con-2022.md b/src/content/blog/2022/2022-09-02-ship-it-con-2022.md index db502280..fe24744e 100644 --- a/src/content/blog/2022/2022-09-02-ship-it-con-2022.md +++ b/src/content/blog/2022/2022-09-02-ship-it-con-2022.md @@ -59,17 +59,16 @@ gitpod.io ## 12.00 Scout24 -Using AWS CDK's to create developer portals for new platforms. +Using AWS CDK's to create developer portals for new platforms. Spotify backstage.io ## 14.30 Intercom - Oncall support and how to track/learn from alerts. - Github issue workflow +Oncall support and how to track/learn from alerts. +Github issue workflow ## 16.00 Laura Nolan Incident reports and how to write them. Tell the human story of the incident and what was leart is key. -See [VOID - Verica Open Incident Database](https://www.thevoid.community/) +See [VOID - Verica Open Incident Database](https://www.thevoid.community/) @lauralifts - diff --git a/src/content/blog/2022/2022-09-14-docker-meetup-dublin.md b/src/content/blog/2022/2022-09-14-docker-meetup-dublin.md index 9c811680..5b6d127d 100644 --- a/src/content/blog/2022/2022-09-14-docker-meetup-dublin.md +++ b/src/content/blog/2022/2022-09-14-docker-meetup-dublin.md @@ -11,12 +11,14 @@ summary: "Docker Extensions" # Docker Extensions Thomas Shaw @ tomwillfixit + - see https://tomwillfixit.com/ - see https://github.com/tomwillfixit ## Talk Notes + - Extensions allow any 3rd party tool to be packaged and delivered via Docker. - Extensions are docker images with extra meta-data. - Same docker commands/tools. @@ -28,4 +30,3 @@ Thomas Shaw @ tomwillfixit # Buildx, Extensions and Bake Ivan Pedrazas - diff --git a/src/content/blog/2022/2022-11-05-hello-mastodon-ie.md b/src/content/blog/2022/2022-11-05-hello-mastodon-ie.md index c0f851db..9dc6fb50 100644 --- a/src/content/blog/2022/2022-11-05-hello-mastodon-ie.md +++ b/src/content/blog/2022/2022-11-05-hello-mastodon-ie.md @@ -9,7 +9,6 @@ tags: [social] Moving to mastodon. - # Docker Extension - https://www.jerriepelser.com/blog/sorting-out-gatsby-folder-structure/ diff --git a/src/content/blog/2022/2022-11-20-synology-home-assistent.md b/src/content/blog/2022/2022-11-20-synology-home-assistent.md index 85d34af3..3d4d9558 100644 --- a/src/content/blog/2022/2022-11-20-synology-home-assistent.md +++ b/src/content/blog/2022/2022-11-20-synology-home-assistent.md @@ -4,9 +4,8 @@ description: "Synology and Remote Home Assistent" slug: "2022-11-20" pubDatetime: 2022-11-20T00:00:00Z published: true -tags: - - synology - +tags: + - synology --- @@ -30,6 +29,7 @@ The following outline the steps i've taken to try and configure remote access to Reference + - https://www.protoncek.com/2021/04/17/synology-reverse-proxy/ - https://community.home-assistant.io/t/setup-on-synology-nas-with-remote-access/430949/2 @@ -42,7 +42,7 @@ The hope is that these URL will return a valid response # Router Config -My home router has the following Port Forwarding rules which send all requests to the Synology IP. Ports 443 and 80 should be open. +My home router has the following Port Forwarding rules which send all requests to the Synology IP. Ports 443 and 80 should be open. ![router-port-forwarding](./11/20/router-port-forwarding.png) diff --git a/src/content/blog/2024/2024-06-22-GA.md b/src/content/blog/2024/2024-06-22-GA.md index be62c071..0c4143a0 100644 --- a/src/content/blog/2024/2024-06-22-GA.md +++ b/src/content/blog/2024/2024-06-22-GA.md @@ -18,4 +18,4 @@ https://tagmanager.google.com/#/container/accounts/6236586547/containers/1882590 ## update -Need to use is:inline to enable. \ No newline at end of file +Need to use is:inline to enable. diff --git a/src/content/blog/2025/2025-02-10-expressive-code.md b/src/content/blog/2025/2025-02-10-expressive-code.md index 1e93a41b..1fa32efd 100644 --- a/src/content/blog/2025/2025-02-10-expressive-code.md +++ b/src/content/blog/2025/2025-02-10-expressive-code.md @@ -15,5 +15,5 @@ https://expressive-code.com/installation/#astro ## Example ```js -console.log('This code is syntax highlighted!') -``` \ No newline at end of file +console.log("This code is syntax highlighted!"); +``` diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index f539ca0b..52b6eddd 100644 --- a/src/layouts/Layout.astro +++ b/src/layouts/Layout.astro @@ -58,12 +58,15 @@ const structuredData = { > - + diff --git a/src/layouts/PostDetails.astro b/src/layouts/PostDetails.astro index ffdfaf06..929d7718 100644 --- a/src/layouts/PostDetails.astro +++ b/src/layouts/PostDetails.astro @@ -191,7 +191,6 @@ const nextPost = -