diff --git a/astro.config.ts b/astro.config.ts index 477fa949..1c1c2afa 100644 --- a/astro.config.ts +++ b/astro.config.ts @@ -4,7 +4,9 @@ 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"; // https://astro.build/config export default defineConfig({ @@ -24,6 +26,7 @@ export default defineConfig({ }), react(), sitemap(), + expressiveCode(), ], image: { // see https://docs.astro.build/en/reference/errors/missing-sharp/ 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", 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/components/Comments.tsx b/src/components/Comments.tsx.txt similarity index 94% rename from src/components/Comments.tsx rename to src/components/Comments.tsx.txt index 5df7f93b..3dcfb1d3 100644 --- a/src/components/Comments.tsx +++ b/src/components/Comments.tsx.txt @@ -1,5 +1,3 @@ -import Giscus, { type Theme } from "@giscus/react"; -//import { GISCUS } from "@config"; import { useEffect, useState } from "react"; interface CommentsProps { 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..ebd1a3d4 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 @@ -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

At dublin docker meetup in the mongodb offices listening to @tomwillfixit talk about docker extensions pic.twitter.com/hDw1qKF3Np

— emeraldjava (@emeraldjava) September 14, 2022
## 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 new file mode 100644 index 00000000..1fa32efd --- /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!"); +``` diff --git a/src/layouts/Layout.astro b/src/layouts/Layout.astro index e7acaa0e..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 518562b0..929d7718 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,15 +180,17 @@ const nextPost = + https://github.com/satnaing/astro-paper/blob/main/src/content/blog/how-to-integrate-giscus-comments.md + --> + -