diff --git a/astro.config.mjs b/astro.config.mjs
index 4826b07..53f0965 100644
--- a/astro.config.mjs
+++ b/astro.config.mjs
@@ -3,7 +3,6 @@ import { defineConfig } from "astro/config";
/**
* Integrations
*/
-// import mdx from "@astrojs/mdx";
import sitemap from "@astrojs/sitemap";
import solidJs from "@astrojs/solid-js";
import image from "@astrojs/image";
@@ -65,28 +64,31 @@ export default defineConfig({
* Articles
*/
{
- name: "posts",
+ name: "articles",
label: "Публикации",
label_singular: "публикацию",
description:
"Технические статьи, туториалы и различные справочные материалы которые связаны с IT тематикой",
folder: "src/content/blog",
- slug: "{{year}}-{{month}}-{{day}}_{{slug}}",
+ slug: "{{slug}}",
create: true,
delete: true,
+ i18n: true,
fields: [
{
name: "coverImage",
widget: "image",
label: "Постер",
+ required: false,
+ i18n: true,
},
{
name: "draft",
label: "В черновике",
widget: "boolean",
- required: true,
- default: true,
hint: "Опубликована ли статья",
+ i18n: true,
+ required: false,
},
{
name: "author",
@@ -95,19 +97,19 @@ export default defineConfig({
search_fields: ["firstName", "lastName"],
collection: "authors",
label: "Автор",
- required: true,
+ i18n: true,
},
{
name: "title",
widget: "string",
label: "Заголовок",
- required: true,
+ i18n: true,
},
{
name: "description",
widget: "string",
label: "Описание",
- required: true,
+ i18n: true,
},
{
name: "tags",
@@ -117,25 +119,27 @@ export default defineConfig({
multiple: true,
value_field: "title",
search_fields: ["title"],
+ i18n: true,
},
{
name: "pubDate",
widget: "datetime",
label: "Дата публикации",
- required: true,
picker_utc: true,
+ i18n: true,
},
{
name: "updatedDate",
widget: "datetime",
label: "Дата обновления",
- required: true,
picker_utc: true,
+ i18n: true,
},
{
name: "body",
widget: "markdown",
label: "Содержание",
+ i18n: true,
},
],
},
@@ -171,24 +175,28 @@ export default defineConfig({
folder: "src/content/authors",
create: true,
delete: true,
+ i18n: true,
fields: [
{
label: "Имя",
name: "firstName",
widget: "string",
required: true,
+ i18n: true,
},
{
label: "Фамилия",
name: "lastName",
widget: "string",
required: true,
+ i18n: true,
},
{
label: "Об авторе",
name: "body",
widget: "markdown",
required: false,
+ i18n: true,
},
],
},
@@ -199,6 +207,7 @@ export default defineConfig({
name: "projects",
label: "Проекты",
label_singular: "проект",
+ description: "Основные проекты, которые были разработаны в выложены в открытый доступ",
folder: "src/content/projects",
create: true,
delete: true,
@@ -211,18 +220,9 @@ export default defineConfig({
required: true,
i18n: true,
},
- {
- name: "draft",
- label: "В черновике",
- widget: "boolean",
- required: true,
- i18n: true,
- default: true,
- },
{
name: "title",
label: "Название",
- default: "my-project",
widget: "string",
required: true,
i18n: true,
@@ -231,7 +231,6 @@ export default defineConfig({
name: "year",
label: "В каком году разработал",
widget: "number",
- default: 2023,
required: true,
i18n: true,
},
@@ -308,9 +307,9 @@ export default defineConfig({
label: "Настройки",
files: [
{
- name: "site-settings",
+ name: "siteconfig",
label: "Настройки веб-сайта",
- file: "src/content/site-settings.md",
+ file: "siteconfig.json",
fields: [
{
label: "Глобальный заголовок",
@@ -320,8 +319,9 @@ export default defineConfig({
},
{
label: "В разработке",
- name: "isUnderConstruction",
+ name: "isSiteUnderConstruction",
widget: "boolean",
+ required: false,
default: false,
hint: "Отображает баннер на всех старницах о том, что веб-сайт находится в разработке",
},
diff --git a/package-lock.json b/package-lock.json
index cfc03a9..3835b70 100644
--- a/package-lock.json
+++ b/package-lock.json
@@ -10,11 +10,11 @@
"license": "MIT",
"dependencies": {
"@astrojs/image": "^0.14.1",
- "@astrojs/mdx": "^0.16.0",
"@astrojs/rss": "^2.1.0",
"@astrojs/sitemap": "^1.0.1",
"@astrojs/solid-js": "^2.0.2",
"@netlify/functions": "^1.4.0",
+ "@sindresorhus/slugify": "^2.2.0",
"astro": "^2.0.10",
"astro-icon": "^0.8.0",
"astro-netlify-cms": "^0.5.3",
@@ -123,33 +123,6 @@
"astro": "^2.0.2"
}
},
- "node_modules/@astrojs/mdx": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.16.0.tgz",
- "integrity": "sha512-HNk0FhNNthI7+pLmheJyPVU36dXE5l+9UwmmnrMV6COHNZIO2t+pnWnsushEDYZjpkYITDwnXKnQAtD8Mqj4xw==",
- "dependencies": {
- "@astrojs/markdown-remark": "^2.0.1",
- "@astrojs/prism": "^2.0.0",
- "@mdx-js/mdx": "^2.1.2",
- "@mdx-js/rollup": "^2.1.1",
- "acorn": "^8.8.0",
- "es-module-lexer": "^0.10.5",
- "estree-util-visit": "^1.2.0",
- "github-slugger": "^1.4.0",
- "gray-matter": "^4.0.3",
- "kleur": "^4.1.4",
- "rehype-raw": "^6.1.1",
- "remark-frontmatter": "^4.0.1",
- "remark-gfm": "^3.0.1",
- "remark-smartypants": "^2.0.0",
- "shiki": "^0.11.1",
- "unist-util-visit": "^4.1.0",
- "vfile": "^5.3.2"
- },
- "engines": {
- "node": ">=16.12.0"
- }
- },
"node_modules/@astrojs/prism": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-2.0.0.tgz",
@@ -1428,52 +1401,6 @@
"resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
"integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA=="
},
- "node_modules/@mdx-js/mdx": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz",
- "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/mdx": "^2.0.0",
- "estree-util-build-jsx": "^2.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "estree-util-to-js": "^1.1.0",
- "estree-walker": "^3.0.0",
- "hast-util-to-estree": "^2.0.0",
- "markdown-extensions": "^1.0.0",
- "periscopic": "^3.0.0",
- "remark-mdx": "^2.0.0",
- "remark-parse": "^10.0.0",
- "remark-rehype": "^10.0.0",
- "unified": "^10.0.0",
- "unist-util-position-from-estree": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "unist-util-visit": "^4.0.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/@mdx-js/rollup": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@mdx-js/rollup/-/rollup-2.3.0.tgz",
- "integrity": "sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==",
- "dependencies": {
- "@mdx-js/mdx": "^2.0.0",
- "@rollup/pluginutils": "^5.0.0",
- "source-map": "^0.7.0",
- "vfile": "^5.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- },
- "peerDependencies": {
- "rollup": ">=2"
- }
- },
"node_modules/@netlify/functions": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.4.0.tgz",
@@ -1556,31 +1483,56 @@
"resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz",
"integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg=="
},
- "node_modules/@rollup/pluginutils": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
- "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "node_modules/@sindresorhus/slugify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.0.tgz",
+ "integrity": "sha512-9Vybc/qX8Kj6pxJaapjkFbiUJPk7MAkCh/GFCxIBnnsuYCFPIXKvnLidG8xlepht3i24L5XemUmGtrJ3UWrl6w==",
"dependencies": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^2.0.2",
- "picomatch": "^2.3.1"
+ "@sindresorhus/transliterate": "^1.0.0",
+ "escape-string-regexp": "^5.0.0"
},
"engines": {
- "node": ">=14.0.0"
+ "node": ">=12"
},
- "peerDependencies": {
- "rollup": "^1.20.0||^2.0.0||^3.0.0"
- },
- "peerDependenciesMeta": {
- "rollup": {
- "optional": true
- }
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
}
},
- "node_modules/@rollup/pluginutils/node_modules/estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ "node_modules/@sindresorhus/slugify/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sindresorhus/transliterate": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz",
+ "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==",
+ "dependencies": {
+ "escape-string-regexp": "^5.0.0"
+ },
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
+ },
+ "node_modules/@sindresorhus/transliterate/node_modules/escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==",
+ "engines": {
+ "node": ">=12"
+ },
+ "funding": {
+ "url": "https://github.com/sponsors/sindresorhus"
+ }
},
"node_modules/@trysound/sax": {
"version": "0.2.0",
@@ -1590,14 +1542,6 @@
"node": ">=10.13.0"
}
},
- "node_modules/@types/acorn": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
- "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
- "dependencies": {
- "@types/estree": "*"
- }
- },
"node_modules/@types/babel__core": {
"version": "7.20.0",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
@@ -1648,14 +1592,6 @@
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
"integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ=="
},
- "node_modules/@types/estree-jsx": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz",
- "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==",
- "dependencies": {
- "@types/estree": "*"
- }
- },
"node_modules/@types/hast": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
@@ -1686,11 +1622,6 @@
"@types/unist": "*"
}
},
- "node_modules/@types/mdx": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.3.tgz",
- "integrity": "sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ=="
- },
"node_modules/@types/mime-types": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz",
@@ -1880,14 +1811,6 @@
"node": ">=0.4.0"
}
},
- "node_modules/acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "peerDependencies": {
- "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0"
- }
- },
"node_modules/ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
@@ -2208,14 +2131,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/astring": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz",
- "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw==",
- "bin": {
- "astring": "bin/astring"
- }
- },
"node_modules/astro": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/astro/-/astro-2.0.10.tgz",
@@ -2833,15 +2748,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -3635,11 +3541,6 @@
"resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
"integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="
},
- "node_modules/es-module-lexer": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.10.5.tgz",
- "integrity": "sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw=="
- },
"node_modules/es-set-tostringtag": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
@@ -3746,68 +3647,6 @@
"esrever": "bin/esrever"
}
},
- "node_modules/estree-util-attach-comments": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz",
- "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==",
- "dependencies": {
- "@types/estree": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/estree-util-build-jsx": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz",
- "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "estree-walker": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/estree-util-is-identifier-name": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz",
- "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ==",
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/estree-util-to-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz",
- "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "astring": "^1.8.0",
- "source-map": "^0.7.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/estree-util-visit": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz",
- "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
@@ -3995,18 +3834,6 @@
"reusify": "^1.0.4"
}
},
- "node_modules/fault": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz",
- "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==",
- "dependencies": {
- "format": "^0.2.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/fecha": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
@@ -4122,14 +3949,6 @@
"is-callable": "^1.1.3"
}
},
- "node_modules/format": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
- "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww==",
- "engines": {
- "node": ">=0.4.x"
- }
- },
"node_modules/formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
@@ -4608,32 +4427,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/hast-util-to-estree": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.2.tgz",
- "integrity": "sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0",
- "comma-separated-tokens": "^2.0.0",
- "estree-util-attach-comments": "^2.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "hast-util-whitespace": "^2.0.0",
- "mdast-util-mdx-expression": "^1.0.0",
- "mdast-util-mdxjs-esm": "^1.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-object": "^0.4.1",
- "unist-util-position": "^4.0.0",
- "zwitch": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/hast-util-to-html": {
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz",
@@ -5037,15 +4830,6 @@
"node": ">= 0.10"
}
},
- "node_modules/is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/is-alphanumeric": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
@@ -5054,19 +4838,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "dependencies": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/is-array-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz",
@@ -5181,15 +4952,6 @@
"url": "https://github.com/sponsors/ljharb"
}
},
- "node_modules/is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/is-docker": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
@@ -5239,15 +5001,6 @@
"node": ">=0.10.0"
}
},
- "node_modules/is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg==",
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/is-hotkey": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
@@ -5329,14 +5082,6 @@
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
},
- "node_modules/is-reference": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz",
- "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==",
- "dependencies": {
- "@types/estree": "*"
- }
- },
"node_modules/is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
@@ -5795,14 +5540,6 @@
"url": "https://github.com/sponsors/wooorm"
}
},
- "node_modules/markdown-extensions": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz",
- "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q==",
- "engines": {
- "node": ">=0.10.0"
- }
- },
"node_modules/markdown-table": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
@@ -5913,20 +5650,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-frontmatter": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.1.tgz",
- "integrity": "sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0",
- "micromark-extension-frontmatter": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/mdast-util-gfm": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz",
@@ -6015,77 +5738,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/mdast-util-mdx": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz",
- "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==",
- "dependencies": {
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-mdx-expression": "^1.0.0",
- "mdast-util-mdx-jsx": "^2.0.0",
- "mdast-util-mdxjs-esm": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-expression": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz",
- "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdx-jsx": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.2.tgz",
- "integrity": "sha512-o9vBCYQK5ZLGEj3tCGISJGjvafyHRVJlZmfJzSE7xjiogSzIeph/Z4zMY65q4WGRMezQBeAwPlrdymDYYYx0tA==",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "ccount": "^2.0.0",
- "mdast-util-from-markdown": "^1.1.0",
- "mdast-util-to-markdown": "^1.3.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-remove-position": "^4.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/mdast-util-mdxjs-esm": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz",
- "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==",
- "dependencies": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/mdast-util-phrasing": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz",
@@ -6270,20 +5922,6 @@
"uvu": "^0.5.0"
}
},
- "node_modules/micromark-extension-frontmatter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz",
- "integrity": "sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==",
- "dependencies": {
- "fault": "^2.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/micromark-extension-gfm": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz",
@@ -6399,100 +6037,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/micromark-extension-mdx-expression": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.4.tgz",
- "integrity": "sha512-TCgLxqW6ReQ3AJgtj1P0P+8ZThBTloLbeb7jNaqr6mCOLDpxUiBFE/9STgooMZttEwOQu5iEcCCa3ZSDhY9FGw==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-factory-mdx-expression": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-events-to-acorn": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "node_modules/micromark-extension-mdx-jsx": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz",
- "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==",
- "dependencies": {
- "@types/acorn": "^4.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "micromark-factory-mdx-expression": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-mdx-md": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz",
- "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==",
- "dependencies": {
- "micromark-util-types": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-mdxjs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz",
- "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==",
- "dependencies": {
- "acorn": "^8.0.0",
- "acorn-jsx": "^5.0.0",
- "micromark-extension-mdx-expression": "^1.0.0",
- "micromark-extension-mdx-jsx": "^1.0.0",
- "micromark-extension-mdx-md": "^1.0.0",
- "micromark-extension-mdxjs-esm": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/micromark-extension-mdxjs-esm": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz",
- "integrity": "sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==",
- "dependencies": {
- "micromark-core-commonmark": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-events-to-acorn": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-position-from-estree": "^1.1.0",
- "uvu": "^0.5.0",
- "vfile-message": "^3.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/micromark-factory-destination": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz",
@@ -6534,31 +6078,6 @@
"uvu": "^0.5.0"
}
},
- "node_modules/micromark-factory-mdx-expression": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.7.tgz",
- "integrity": "sha512-QAdFbkQagTZ/eKb8zDGqmjvgevgJH3+aQpvvKrXWxNJp3o8/l2cAbbrBd0E04r0Gx6nssPpqWIjnbHFvZu5qsQ==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-events-to-acorn": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-position-from-estree": "^1.0.0",
- "uvu": "^0.5.0",
- "vfile-message": "^3.0.0"
- }
- },
"node_modules/micromark-factory-space": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz",
@@ -6751,30 +6270,6 @@
}
]
},
- "node_modules/micromark-util-events-to-acorn": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.1.tgz",
- "integrity": "sha512-mkg3BaWlw6ZTkQORrKVBW4o9ICXPxLtGz51vml5mQpKFdo9vqIX68CAx5JhTOdjQyAHH7JFmm4rh8toSPQZUmg==",
- "funding": [
- {
- "type": "GitHub Sponsors",
- "url": "https://github.com/sponsors/unifiedjs"
- },
- {
- "type": "OpenCollective",
- "url": "https://opencollective.com/unified"
- }
- ],
- "dependencies": {
- "@types/acorn": "^4.0.0",
- "@types/estree": "^1.0.0",
- "estree-util-visit": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0",
- "vfile-location": "^4.0.0",
- "vfile-message": "^3.0.0"
- }
- },
"node_modules/micromark-util-html-tag-name": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz",
@@ -9074,25 +8569,6 @@
"node": ">=6"
}
},
- "node_modules/parse-entities": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
- "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "character-entities": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- },
- "funding": {
- "type": "github",
- "url": "https://github.com/sponsors/wooorm"
- }
- },
"node_modules/parse-headers": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz",
@@ -9188,16 +8664,6 @@
"pbf": "bin/pbf"
}
},
- "node_modules/periscopic": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
- "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
- "dependencies": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^3.0.0",
- "is-reference": "^3.0.0"
- }
- },
"node_modules/picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -10756,21 +10222,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-frontmatter": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz",
- "integrity": "sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==",
- "dependencies": {
- "@types/mdast": "^3.0.0",
- "mdast-util-frontmatter": "^1.0.0",
- "micromark-extension-frontmatter": "^1.0.0",
- "unified": "^10.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/remark-gfm": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz",
@@ -10786,19 +10237,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/remark-mdx": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz",
- "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==",
- "dependencies": {
- "mdast-util-mdx": "^2.0.0",
- "micromark-extension-mdxjs": "^1.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/remark-parse": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz",
@@ -12069,14 +11507,6 @@
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
- "node_modules/style-to-object": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz",
- "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==",
- "dependencies": {
- "inline-style-parser": "0.1.1"
- }
- },
"node_modules/stylis": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
@@ -12579,31 +12009,6 @@
"url": "https://opencollective.com/unified"
}
},
- "node_modules/unist-util-position-from-estree": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz",
- "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==",
- "dependencies": {
- "@types/unist": "^2.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
- "node_modules/unist-util-remove-position": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz",
- "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==",
- "dependencies": {
- "@types/unist": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- },
- "funding": {
- "type": "opencollective",
- "url": "https://opencollective.com/unified"
- }
- },
"node_modules/unist-util-stringify-position": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
@@ -13362,30 +12767,6 @@
"vfile": "^5.3.2"
}
},
- "@astrojs/mdx": {
- "version": "0.16.0",
- "resolved": "https://registry.npmjs.org/@astrojs/mdx/-/mdx-0.16.0.tgz",
- "integrity": "sha512-HNk0FhNNthI7+pLmheJyPVU36dXE5l+9UwmmnrMV6COHNZIO2t+pnWnsushEDYZjpkYITDwnXKnQAtD8Mqj4xw==",
- "requires": {
- "@astrojs/markdown-remark": "^2.0.1",
- "@astrojs/prism": "^2.0.0",
- "@mdx-js/mdx": "^2.1.2",
- "@mdx-js/rollup": "^2.1.1",
- "acorn": "^8.8.0",
- "es-module-lexer": "^0.10.5",
- "estree-util-visit": "^1.2.0",
- "github-slugger": "^1.4.0",
- "gray-matter": "^4.0.3",
- "kleur": "^4.1.4",
- "rehype-raw": "^6.1.1",
- "remark-frontmatter": "^4.0.1",
- "remark-gfm": "^3.0.1",
- "remark-smartypants": "^2.0.0",
- "shiki": "^0.11.1",
- "unist-util-visit": "^4.1.0",
- "vfile": "^5.3.2"
- }
- },
"@astrojs/prism": {
"version": "2.0.0",
"resolved": "https://registry.npmjs.org/@astrojs/prism/-/prism-2.0.0.tgz",
@@ -14292,41 +13673,6 @@
"resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz",
"integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA=="
},
- "@mdx-js/mdx": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@mdx-js/mdx/-/mdx-2.3.0.tgz",
- "integrity": "sha512-jLuwRlz8DQfQNiUCJR50Y09CGPq3fLtmtUQfVrj79E0JWu3dvsVcxVIcfhR5h0iXu+/z++zDrYeiJqifRynJkA==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/mdx": "^2.0.0",
- "estree-util-build-jsx": "^2.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "estree-util-to-js": "^1.1.0",
- "estree-walker": "^3.0.0",
- "hast-util-to-estree": "^2.0.0",
- "markdown-extensions": "^1.0.0",
- "periscopic": "^3.0.0",
- "remark-mdx": "^2.0.0",
- "remark-parse": "^10.0.0",
- "remark-rehype": "^10.0.0",
- "unified": "^10.0.0",
- "unist-util-position-from-estree": "^1.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "unist-util-visit": "^4.0.0",
- "vfile": "^5.0.0"
- }
- },
- "@mdx-js/rollup": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/@mdx-js/rollup/-/rollup-2.3.0.tgz",
- "integrity": "sha512-wLvRfJS/M4UmdqTd+WoaySEE7q4BIejYf1xAHXYvtT1du/1Tl/z2450Gg2+Hu7fh05KwRRiehiTP9Yc/Dtn0fA==",
- "requires": {
- "@mdx-js/mdx": "^2.0.0",
- "@rollup/pluginutils": "^5.0.0",
- "source-map": "^0.7.0",
- "vfile": "^5.0.0"
- }
- },
"@netlify/functions": {
"version": "1.4.0",
"resolved": "https://registry.npmjs.org/@netlify/functions/-/functions-1.4.0.tgz",
@@ -14391,20 +13737,34 @@
"resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-2.0.0.tgz",
"integrity": "sha512-Pc/AFTdwZwEKJxFJvlxrSmGe/di+aAOBn60sremrpLo6VI/6cmiUYNNwlI5KNYttg7uypzA3ILPMPgxB2GYZEg=="
},
- "@rollup/pluginutils": {
- "version": "5.0.2",
- "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.0.2.tgz",
- "integrity": "sha512-pTd9rIsP92h+B6wWwFbW8RkZv4hiR/xKsqre4SIuAOaOEQRxi0lqLke9k2/7WegC85GgUs9pjmOjCUi3In4vwA==",
+ "@sindresorhus/slugify": {
+ "version": "2.2.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/slugify/-/slugify-2.2.0.tgz",
+ "integrity": "sha512-9Vybc/qX8Kj6pxJaapjkFbiUJPk7MAkCh/GFCxIBnnsuYCFPIXKvnLidG8xlepht3i24L5XemUmGtrJ3UWrl6w==",
"requires": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^2.0.2",
- "picomatch": "^2.3.1"
+ "@sindresorhus/transliterate": "^1.0.0",
+ "escape-string-regexp": "^5.0.0"
},
"dependencies": {
- "estree-walker": {
- "version": "2.0.2",
- "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz",
- "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w=="
+ "escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
+ }
+ }
+ },
+ "@sindresorhus/transliterate": {
+ "version": "1.6.0",
+ "resolved": "https://registry.npmjs.org/@sindresorhus/transliterate/-/transliterate-1.6.0.tgz",
+ "integrity": "sha512-doH1gimEu3A46VX6aVxpHTeHrytJAG6HgdxntYnCFiIFHEM/ZGpG8KiZGBChchjQmG0XFIBL552kBTjVcMZXwQ==",
+ "requires": {
+ "escape-string-regexp": "^5.0.0"
+ },
+ "dependencies": {
+ "escape-string-regexp": {
+ "version": "5.0.0",
+ "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz",
+ "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw=="
}
}
},
@@ -14413,14 +13773,6 @@
"resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz",
"integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA=="
},
- "@types/acorn": {
- "version": "4.0.6",
- "resolved": "https://registry.npmjs.org/@types/acorn/-/acorn-4.0.6.tgz",
- "integrity": "sha512-veQTnWP+1D/xbxVrPC3zHnCZRjSrKfhbMUlEA43iMZLu7EsnTtkJklIuwrCPbOi8YkvDQAiW05VQQFvvz9oieQ==",
- "requires": {
- "@types/estree": "*"
- }
- },
"@types/babel__core": {
"version": "7.20.0",
"resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.0.tgz",
@@ -14471,14 +13823,6 @@
"resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz",
"integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ=="
},
- "@types/estree-jsx": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/@types/estree-jsx/-/estree-jsx-1.0.0.tgz",
- "integrity": "sha512-3qvGd0z8F2ENTGr/GG1yViqfiKmRfrXVx5sJyHGFu3z7m5g5utCQtGp/g29JnjflhtQJBv1WDQukHiT58xPcYQ==",
- "requires": {
- "@types/estree": "*"
- }
- },
"@types/hast": {
"version": "2.3.4",
"resolved": "https://registry.npmjs.org/@types/hast/-/hast-2.3.4.tgz",
@@ -14509,11 +13853,6 @@
"@types/unist": "*"
}
},
- "@types/mdx": {
- "version": "2.0.3",
- "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.3.tgz",
- "integrity": "sha512-IgHxcT3RC8LzFLhKwP3gbMPeaK7BM9eBH46OdapPA7yvuIUJ8H6zHZV53J8hGZcTSnt95jANt+rTBNUUc22ACQ=="
- },
"@types/mime-types": {
"version": "2.1.1",
"resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.1.tgz",
@@ -14699,12 +14038,6 @@
"resolved": "https://registry.npmjs.org/acorn/-/acorn-8.8.2.tgz",
"integrity": "sha512-xjIYgE8HBrkpd/sJqOGNspf8uHG+NOHGOw6a/Urj8taM2EXfdNAH2oFcPeIFfsv3+kz/mJrS5VuMqbNLjCa2vw=="
},
- "acorn-jsx": {
- "version": "5.3.2",
- "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz",
- "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==",
- "requires": {}
- },
"ajv": {
"version": "8.12.0",
"resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz",
@@ -14976,11 +14309,6 @@
"is-string": "^1.0.7"
}
},
- "astring": {
- "version": "1.8.4",
- "resolved": "https://registry.npmjs.org/astring/-/astring-1.8.4.tgz",
- "integrity": "sha512-97a+l2LBU3Op3bBQEff79i/E4jMD2ZLFD8rHx9B6mXyB2uQwhJQYfiDqUwtfjF4QA1F2qs//N6Cw8LetMbQjcw=="
- },
"astro": {
"version": "2.0.10",
"resolved": "https://registry.npmjs.org/astro/-/astro-2.0.10.tgz",
@@ -15441,11 +14769,6 @@
"resolved": "https://registry.npmjs.org/character-entities-legacy/-/character-entities-legacy-3.0.0.tgz",
"integrity": "sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ=="
},
- "character-reference-invalid": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/character-reference-invalid/-/character-reference-invalid-2.0.1.tgz",
- "integrity": "sha512-iBZ4F4wRbyORVsu0jPV7gXkOsGYjGHPmAyv+HiHG8gi5PtC9KI2j1+v8/tlibRvjoWX027ypmG/n0HtO5t7unw=="
- },
"chokidar": {
"version": "3.5.3",
"resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz",
@@ -16024,11 +15347,6 @@
"resolved": "https://registry.npmjs.org/es-array-method-boxes-properly/-/es-array-method-boxes-properly-1.0.0.tgz",
"integrity": "sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA=="
},
- "es-module-lexer": {
- "version": "0.10.5",
- "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-0.10.5.tgz",
- "integrity": "sha512-+7IwY/kiGAacQfY+YBhKMvEmyAJnw5grTUgjG85Pe7vcUI/6b7pZjZG8nQ7+48YhzEAEqrEgD2dCz/JIK+AYvw=="
- },
"es-set-tostringtag": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz",
@@ -16103,48 +15421,6 @@
"resolved": "https://registry.npmjs.org/esrever/-/esrever-0.2.0.tgz",
"integrity": "sha512-1e9YJt6yQkyekt2BUjTky7LZWWVyC2cIpgdnsTAvMcnzXIZvlW/fTMPkxBcZoYhgih4d+EC+iw+yv9GIkz7vrw=="
},
- "estree-util-attach-comments": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/estree-util-attach-comments/-/estree-util-attach-comments-2.1.1.tgz",
- "integrity": "sha512-+5Ba/xGGS6mnwFbXIuQiDPTbuTxuMCooq3arVv7gPZtYpjp+VXH/NkHAP35OOefPhNG/UGqU3vt/LTABwcHX0w==",
- "requires": {
- "@types/estree": "^1.0.0"
- }
- },
- "estree-util-build-jsx": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/estree-util-build-jsx/-/estree-util-build-jsx-2.2.2.tgz",
- "integrity": "sha512-m56vOXcOBuaF+Igpb9OPAy7f9w9OIkb5yhjsZuaPm7HoGi4oTOQi0h2+yZ+AtKklYFZ+rPC4n0wYCJCEU1ONqg==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "estree-walker": "^3.0.0"
- }
- },
- "estree-util-is-identifier-name": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/estree-util-is-identifier-name/-/estree-util-is-identifier-name-2.1.0.tgz",
- "integrity": "sha512-bEN9VHRyXAUOjkKVQVvArFym08BTWB0aJPppZZr0UNyAqWsLaVfAqP7hbaTJjzHifmB5ebnR8Wm7r7yGN/HonQ=="
- },
- "estree-util-to-js": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/estree-util-to-js/-/estree-util-to-js-1.2.0.tgz",
- "integrity": "sha512-IzU74r1PK5IMMGZXUVZbmiu4A1uhiPgW5hm1GjcOfr4ZzHaMPpLNJjR7HjXiIOzi25nZDrgFTobHTkV5Q6ITjA==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "astring": "^1.8.0",
- "source-map": "^0.7.0"
- }
- },
- "estree-util-visit": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/estree-util-visit/-/estree-util-visit-1.2.1.tgz",
- "integrity": "sha512-xbgqcrkIVbIG+lI/gzbvd9SGTJL4zqJKBFttUl5pP27KhAjtMKbX/mQXJ7qgyXpMgVy/zvpm0xoQQaGL8OloOw==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/unist": "^2.0.0"
- }
- },
"estree-walker": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-3.0.3.tgz",
@@ -16303,14 +15579,6 @@
"reusify": "^1.0.4"
}
},
- "fault": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/fault/-/fault-2.0.1.tgz",
- "integrity": "sha512-WtySTkS4OKev5JtpHXnib4Gxiurzh5NCGvWrFaZ34m6JehfTUhKZvn9njTfw48t6JumVQOmrKqpmGcdwxnhqBQ==",
- "requires": {
- "format": "^0.2.0"
- }
- },
"fecha": {
"version": "4.2.3",
"resolved": "https://registry.npmjs.org/fecha/-/fecha-4.2.3.tgz",
@@ -16403,11 +15671,6 @@
"is-callable": "^1.1.3"
}
},
- "format": {
- "version": "0.2.2",
- "resolved": "https://registry.npmjs.org/format/-/format-0.2.2.tgz",
- "integrity": "sha512-wzsgA6WOq+09wrU1tsJ09udeR/YZRaeArL9e1wPbFg3GG2yDnC2ldKpxs4xunpFF9DgqCqOIra3bc1HWrJ37Ww=="
- },
"formdata-polyfill": {
"version": "4.0.10",
"resolved": "https://registry.npmjs.org/formdata-polyfill/-/formdata-polyfill-4.0.10.tgz",
@@ -16747,28 +16010,6 @@
"zwitch": "^2.0.0"
}
},
- "hast-util-to-estree": {
- "version": "2.3.2",
- "resolved": "https://registry.npmjs.org/hast-util-to-estree/-/hast-util-to-estree-2.3.2.tgz",
- "integrity": "sha512-YYDwATNdnvZi3Qi84iatPIl1lWpXba1MeNrNbDfJfVzEBZL8uUmtR7mt7bxKBC8kuAuvb0bkojXYZzsNHyHCLg==",
- "requires": {
- "@types/estree": "^1.0.0",
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/unist": "^2.0.0",
- "comma-separated-tokens": "^2.0.0",
- "estree-util-attach-comments": "^2.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "hast-util-whitespace": "^2.0.0",
- "mdast-util-mdx-expression": "^1.0.0",
- "mdast-util-mdxjs-esm": "^1.0.0",
- "property-information": "^6.0.0",
- "space-separated-tokens": "^2.0.0",
- "style-to-object": "^0.4.1",
- "unist-util-position": "^4.0.0",
- "zwitch": "^2.0.0"
- }
- },
"hast-util-to-html": {
"version": "8.0.4",
"resolved": "https://registry.npmjs.org/hast-util-to-html/-/hast-util-to-html-8.0.4.tgz",
@@ -17062,25 +16303,11 @@
"resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz",
"integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g=="
},
- "is-alphabetical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphabetical/-/is-alphabetical-2.0.1.tgz",
- "integrity": "sha512-FWyyY60MeTNyeSRpkM2Iry0G9hpr7/9kD40mD/cGQEuilcZYS4okz8SN2Q6rLCJ8gbCt6fN+rC+6tMGS99LaxQ=="
- },
"is-alphanumeric": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/is-alphanumeric/-/is-alphanumeric-1.0.0.tgz",
"integrity": "sha512-ZmRL7++ZkcMOfDuWZuMJyIVLr2keE1o/DeNWh1EmgqGhUcV+9BIVsx0BcSBOHTZqzjs4+dISzr2KAeBEWGgXeA=="
},
- "is-alphanumerical": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-alphanumerical/-/is-alphanumerical-2.0.1.tgz",
- "integrity": "sha512-hmbYhX/9MUMF5uh7tOXyK/n0ZvWpad5caBA17GsC6vyuCqaWliRG5K1qS9inmUhEMaOBIW7/whAnSwveW/LtZw==",
- "requires": {
- "is-alphabetical": "^2.0.0",
- "is-decimal": "^2.0.0"
- }
- },
"is-array-buffer": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz",
@@ -17148,11 +16375,6 @@
"has-tostringtag": "^1.0.0"
}
},
- "is-decimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-decimal/-/is-decimal-2.0.1.tgz",
- "integrity": "sha512-AAB9hiomQs5DXWcRB1rqsxGUstbRroFOPPVAomNk/3XHR5JyEZChOyTWe2oayKnsSsr/kcGqF+z6yuH6HHpN0A=="
- },
"is-docker": {
"version": "3.0.0",
"resolved": "https://registry.npmjs.org/is-docker/-/is-docker-3.0.0.tgz",
@@ -17181,11 +16403,6 @@
"is-extglob": "^2.1.1"
}
},
- "is-hexadecimal": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/is-hexadecimal/-/is-hexadecimal-2.0.1.tgz",
- "integrity": "sha512-DgZQp241c8oO6cA1SbTEWiXeoxV42vlcJxgH+B3hi1AiqqKruZR3ZGF8In3fj4+/y/7rHvlOZLZtgJ/4ttYGZg=="
- },
"is-hotkey": {
"version": "0.2.0",
"resolved": "https://registry.npmjs.org/is-hotkey/-/is-hotkey-0.2.0.tgz",
@@ -17237,14 +16454,6 @@
"resolved": "https://registry.npmjs.org/is-promise/-/is-promise-4.0.0.tgz",
"integrity": "sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ=="
},
- "is-reference": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-3.0.1.tgz",
- "integrity": "sha512-baJJdQLiYaJdvFbJqXrcGv3WU3QCzBlUcI5QhbesIm6/xPsvmO+2CDoi/GMOFBQEQm+PXkwOPrp9KK5ozZsp2w==",
- "requires": {
- "@types/estree": "*"
- }
- },
"is-regex": {
"version": "1.1.4",
"resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz",
@@ -17582,11 +16791,6 @@
"resolved": "https://registry.npmjs.org/markdown-escapes/-/markdown-escapes-1.0.4.tgz",
"integrity": "sha512-8z4efJYk43E0upd0NbVXwgSTQs6cT3T06etieCMEg7dRbzCbxUCK/GHlX8mhHRDcp+OLlHkPKsvqQTCvsRl2cg=="
},
- "markdown-extensions": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/markdown-extensions/-/markdown-extensions-1.1.1.tgz",
- "integrity": "sha512-WWC0ZuMzCyDHYCasEGs4IPvLyTGftYwh6wIEOULOF0HXcqZlhwRzrK0w2VUlxWA98xnvb/jszw4ZSkJ6ADpM6Q=="
- },
"markdown-table": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/markdown-table/-/markdown-table-3.0.3.tgz",
@@ -17675,16 +16879,6 @@
"uvu": "^0.5.0"
}
},
- "mdast-util-frontmatter": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-frontmatter/-/mdast-util-frontmatter-1.0.1.tgz",
- "integrity": "sha512-JjA2OjxRqAa8wEG8hloD0uTU0kdn8kbtOWpPP94NBkfAlbxn4S8gCGf/9DwFtEeGPXrDcNXdiDjVaRdUFqYokw==",
- "requires": {
- "@types/mdast": "^3.0.0",
- "mdast-util-to-markdown": "^1.3.0",
- "micromark-extension-frontmatter": "^1.0.0"
- }
- },
"mdast-util-gfm": {
"version": "2.0.2",
"resolved": "https://registry.npmjs.org/mdast-util-gfm/-/mdast-util-gfm-2.0.2.tgz",
@@ -17749,61 +16943,6 @@
"mdast-util-to-markdown": "^1.3.0"
}
},
- "mdast-util-mdx": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx/-/mdast-util-mdx-2.0.1.tgz",
- "integrity": "sha512-38w5y+r8nyKlGvNjSEqWrhG0w5PmnRA+wnBvm+ulYCct7nsGYhFVb0lljS9bQav4psDAS1eGkP2LMVcZBi/aqw==",
- "requires": {
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-mdx-expression": "^1.0.0",
- "mdast-util-mdx-jsx": "^2.0.0",
- "mdast-util-mdxjs-esm": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
- }
- },
- "mdast-util-mdx-expression": {
- "version": "1.3.2",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-expression/-/mdast-util-mdx-expression-1.3.2.tgz",
- "integrity": "sha512-xIPmR5ReJDu/DHH1OoIT1HkuybIfRGYRywC+gJtI7qHjCJp/M9jrmBEJW22O8lskDWm562BX2W8TiAwRTb0rKA==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
- }
- },
- "mdast-util-mdx-jsx": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-2.1.2.tgz",
- "integrity": "sha512-o9vBCYQK5ZLGEj3tCGISJGjvafyHRVJlZmfJzSE7xjiogSzIeph/Z4zMY65q4WGRMezQBeAwPlrdymDYYYx0tA==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "@types/unist": "^2.0.0",
- "ccount": "^2.0.0",
- "mdast-util-from-markdown": "^1.1.0",
- "mdast-util-to-markdown": "^1.3.0",
- "parse-entities": "^4.0.0",
- "stringify-entities": "^4.0.0",
- "unist-util-remove-position": "^4.0.0",
- "unist-util-stringify-position": "^3.0.0",
- "vfile-message": "^3.0.0"
- }
- },
- "mdast-util-mdxjs-esm": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/mdast-util-mdxjs-esm/-/mdast-util-mdxjs-esm-1.3.1.tgz",
- "integrity": "sha512-SXqglS0HrEvSdUEfoXFtcg7DRl7S2cwOXc7jkuusG472Mmjag34DUDeOJUZtl+BVnyeO1frIgVpHlNRWc2gk/w==",
- "requires": {
- "@types/estree-jsx": "^1.0.0",
- "@types/hast": "^2.0.0",
- "@types/mdast": "^3.0.0",
- "mdast-util-from-markdown": "^1.0.0",
- "mdast-util-to-markdown": "^1.0.0"
- }
- },
"mdast-util-phrasing": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-3.0.1.tgz",
@@ -17943,16 +17082,6 @@
"uvu": "^0.5.0"
}
},
- "micromark-extension-frontmatter": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-frontmatter/-/micromark-extension-frontmatter-1.0.0.tgz",
- "integrity": "sha512-EXjmRnupoX6yYuUJSQhrQ9ggK0iQtQlpi6xeJzVD5xscyAI+giqco5fdymayZhJMbIFecjnE2yz85S9NzIgQpg==",
- "requires": {
- "fault": "^2.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0"
- }
- },
"micromark-extension-gfm": {
"version": "2.0.1",
"resolved": "https://registry.npmjs.org/micromark-extension-gfm/-/micromark-extension-gfm-2.0.1.tgz",
@@ -18040,74 +17169,6 @@
"uvu": "^0.5.0"
}
},
- "micromark-extension-mdx-expression": {
- "version": "1.0.4",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-expression/-/micromark-extension-mdx-expression-1.0.4.tgz",
- "integrity": "sha512-TCgLxqW6ReQ3AJgtj1P0P+8ZThBTloLbeb7jNaqr6mCOLDpxUiBFE/9STgooMZttEwOQu5iEcCCa3ZSDhY9FGw==",
- "requires": {
- "micromark-factory-mdx-expression": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-events-to-acorn": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0"
- }
- },
- "micromark-extension-mdx-jsx": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-jsx/-/micromark-extension-mdx-jsx-1.0.3.tgz",
- "integrity": "sha512-VfA369RdqUISF0qGgv2FfV7gGjHDfn9+Qfiv5hEwpyr1xscRj/CiVRkU7rywGFCO7JwJ5L0e7CJz60lY52+qOA==",
- "requires": {
- "@types/acorn": "^4.0.0",
- "estree-util-is-identifier-name": "^2.0.0",
- "micromark-factory-mdx-expression": "^1.0.0",
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0",
- "vfile-message": "^3.0.0"
- }
- },
- "micromark-extension-mdx-md": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdx-md/-/micromark-extension-mdx-md-1.0.0.tgz",
- "integrity": "sha512-xaRAMoSkKdqZXDAoSgp20Azm0aRQKGOl0RrS81yGu8Hr/JhMsBmfs4wR7m9kgVUIO36cMUQjNyiyDKPrsv8gOw==",
- "requires": {
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-extension-mdxjs": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs/-/micromark-extension-mdxjs-1.0.0.tgz",
- "integrity": "sha512-TZZRZgeHvtgm+IhtgC2+uDMR7h8eTKF0QUX9YsgoL9+bADBpBY6SiLvWqnBlLbCEevITmTqmEuY3FoxMKVs1rQ==",
- "requires": {
- "acorn": "^8.0.0",
- "acorn-jsx": "^5.0.0",
- "micromark-extension-mdx-expression": "^1.0.0",
- "micromark-extension-mdx-jsx": "^1.0.0",
- "micromark-extension-mdx-md": "^1.0.0",
- "micromark-extension-mdxjs-esm": "^1.0.0",
- "micromark-util-combine-extensions": "^1.0.0",
- "micromark-util-types": "^1.0.0"
- }
- },
- "micromark-extension-mdxjs-esm": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/micromark-extension-mdxjs-esm/-/micromark-extension-mdxjs-esm-1.0.3.tgz",
- "integrity": "sha512-2N13ol4KMoxb85rdDwTAC6uzs8lMX0zeqpcyx7FhS7PxXomOnLactu8WI8iBNXW8AVyea3KIJd/1CKnUmwrK9A==",
- "requires": {
- "micromark-core-commonmark": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-events-to-acorn": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-position-from-estree": "^1.1.0",
- "uvu": "^0.5.0",
- "vfile-message": "^3.0.0"
- }
- },
"micromark-factory-destination": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-factory-destination/-/micromark-factory-destination-1.0.0.tgz",
@@ -18129,21 +17190,6 @@
"uvu": "^0.5.0"
}
},
- "micromark-factory-mdx-expression": {
- "version": "1.0.7",
- "resolved": "https://registry.npmjs.org/micromark-factory-mdx-expression/-/micromark-factory-mdx-expression-1.0.7.tgz",
- "integrity": "sha512-QAdFbkQagTZ/eKb8zDGqmjvgevgJH3+aQpvvKrXWxNJp3o8/l2cAbbrBd0E04r0Gx6nssPpqWIjnbHFvZu5qsQ==",
- "requires": {
- "micromark-factory-space": "^1.0.0",
- "micromark-util-character": "^1.0.0",
- "micromark-util-events-to-acorn": "^1.0.0",
- "micromark-util-symbol": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "unist-util-position-from-estree": "^1.0.0",
- "uvu": "^0.5.0",
- "vfile-message": "^3.0.0"
- }
- },
"micromark-factory-space": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/micromark-factory-space/-/micromark-factory-space-1.0.0.tgz",
@@ -18236,20 +17282,6 @@
"resolved": "https://registry.npmjs.org/micromark-util-encode/-/micromark-util-encode-1.0.1.tgz",
"integrity": "sha512-U2s5YdnAYexjKDel31SVMPbfi+eF8y1U4pfiRW/Y8EFVCy/vgxk/2wWTxzcqE71LHtCuCzlBDRU2a5CQ5j+mQA=="
},
- "micromark-util-events-to-acorn": {
- "version": "1.2.1",
- "resolved": "https://registry.npmjs.org/micromark-util-events-to-acorn/-/micromark-util-events-to-acorn-1.2.1.tgz",
- "integrity": "sha512-mkg3BaWlw6ZTkQORrKVBW4o9ICXPxLtGz51vml5mQpKFdo9vqIX68CAx5JhTOdjQyAHH7JFmm4rh8toSPQZUmg==",
- "requires": {
- "@types/acorn": "^4.0.0",
- "@types/estree": "^1.0.0",
- "estree-util-visit": "^1.0.0",
- "micromark-util-types": "^1.0.0",
- "uvu": "^0.5.0",
- "vfile-location": "^4.0.0",
- "vfile-message": "^3.0.0"
- }
- },
"micromark-util-html-tag-name": {
"version": "1.1.0",
"resolved": "https://registry.npmjs.org/micromark-util-html-tag-name/-/micromark-util-html-tag-name-1.1.0.tgz",
@@ -19823,21 +18855,6 @@
"callsites": "^3.0.0"
}
},
- "parse-entities": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/parse-entities/-/parse-entities-4.0.1.tgz",
- "integrity": "sha512-SWzvYcSJh4d/SGLIOQfZ/CoNv6BTlI6YEQ7Nj82oDVnRpwe/Z/F1EMx42x3JAOwGBlCjeCH0BRJQbQ/opHL17w==",
- "requires": {
- "@types/unist": "^2.0.0",
- "character-entities": "^2.0.0",
- "character-entities-legacy": "^3.0.0",
- "character-reference-invalid": "^2.0.0",
- "decode-named-character-reference": "^1.0.0",
- "is-alphanumerical": "^2.0.0",
- "is-decimal": "^2.0.0",
- "is-hexadecimal": "^2.0.0"
- }
- },
"parse-headers": {
"version": "2.0.5",
"resolved": "https://registry.npmjs.org/parse-headers/-/parse-headers-2.0.5.tgz",
@@ -19908,16 +18925,6 @@
"resolve-protobuf-schema": "^2.1.0"
}
},
- "periscopic": {
- "version": "3.1.0",
- "resolved": "https://registry.npmjs.org/periscopic/-/periscopic-3.1.0.tgz",
- "integrity": "sha512-vKiQ8RRtkl9P+r/+oefh25C3fhybptkHKCZSPlcXiJux2tJF55GnEj3BVn4A5gKfq9NWWXXrxkHBwVPUfH0opw==",
- "requires": {
- "@types/estree": "^1.0.0",
- "estree-walker": "^3.0.0",
- "is-reference": "^3.0.0"
- }
- },
"picocolors": {
"version": "1.0.0",
"resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz",
@@ -21026,17 +20033,6 @@
"unified": "^10.0.0"
}
},
- "remark-frontmatter": {
- "version": "4.0.1",
- "resolved": "https://registry.npmjs.org/remark-frontmatter/-/remark-frontmatter-4.0.1.tgz",
- "integrity": "sha512-38fJrB0KnmD3E33a5jZC/5+gGAC2WKNiPw1/fdXJvijBlhA7RCsvJklrYJakS0HedninvaCYW8lQGf9C918GfA==",
- "requires": {
- "@types/mdast": "^3.0.0",
- "mdast-util-frontmatter": "^1.0.0",
- "micromark-extension-frontmatter": "^1.0.0",
- "unified": "^10.0.0"
- }
- },
"remark-gfm": {
"version": "3.0.1",
"resolved": "https://registry.npmjs.org/remark-gfm/-/remark-gfm-3.0.1.tgz",
@@ -21048,15 +20044,6 @@
"unified": "^10.0.0"
}
},
- "remark-mdx": {
- "version": "2.3.0",
- "resolved": "https://registry.npmjs.org/remark-mdx/-/remark-mdx-2.3.0.tgz",
- "integrity": "sha512-g53hMkpM0I98MU266IzDFMrTD980gNF3BJnkyFcmN+dD873mQeD5rdMO3Y2X+x8umQfbSE0PcoEDl7ledSA+2g==",
- "requires": {
- "mdast-util-mdx": "^2.0.0",
- "micromark-extension-mdxjs": "^1.0.0"
- }
- },
"remark-parse": {
"version": "10.0.1",
"resolved": "https://registry.npmjs.org/remark-parse/-/remark-parse-10.0.1.tgz",
@@ -21990,14 +20977,6 @@
"resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz",
"integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA=="
},
- "style-to-object": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-0.4.1.tgz",
- "integrity": "sha512-HFpbb5gr2ypci7Qw+IOhnP2zOU7e77b+rzM+wTzXzfi1PrtBCX0E7Pk4wL4iTLnhzZ+JgEGAhX81ebTg/aYjQw==",
- "requires": {
- "inline-style-parser": "0.1.1"
- }
- },
"stylis": {
"version": "4.1.3",
"resolved": "https://registry.npmjs.org/stylis/-/stylis-4.1.3.tgz",
@@ -22374,23 +21353,6 @@
"@types/unist": "^2.0.0"
}
},
- "unist-util-position-from-estree": {
- "version": "1.1.2",
- "resolved": "https://registry.npmjs.org/unist-util-position-from-estree/-/unist-util-position-from-estree-1.1.2.tgz",
- "integrity": "sha512-poZa0eXpS+/XpoQwGwl79UUdea4ol2ZuCYguVaJS4qzIOMDzbqz8a3erUCOmubSZkaOuGamb3tX790iwOIROww==",
- "requires": {
- "@types/unist": "^2.0.0"
- }
- },
- "unist-util-remove-position": {
- "version": "4.0.2",
- "resolved": "https://registry.npmjs.org/unist-util-remove-position/-/unist-util-remove-position-4.0.2.tgz",
- "integrity": "sha512-TkBb0HABNmxzAcfLf4qsIbFbaPDvMO6wa3b3j4VcEzFVaw1LBKwnW4/sRJ/atSLSzoIg41JWEdnE7N6DIhGDGQ==",
- "requires": {
- "@types/unist": "^2.0.0",
- "unist-util-visit": "^4.0.0"
- }
- },
"unist-util-stringify-position": {
"version": "3.0.3",
"resolved": "https://registry.npmjs.org/unist-util-stringify-position/-/unist-util-stringify-position-3.0.3.tgz",
diff --git a/package.json b/package.json
index edaf5a3..7ff3113 100644
--- a/package.json
+++ b/package.json
@@ -19,11 +19,11 @@
},
"dependencies": {
"@astrojs/image": "^0.14.1",
- "@astrojs/mdx": "^0.16.0",
"@astrojs/rss": "^2.1.0",
"@astrojs/sitemap": "^1.0.1",
"@astrojs/solid-js": "^2.0.2",
"@netlify/functions": "^1.4.0",
+ "@sindresorhus/slugify": "^2.2.0",
"astro": "^2.0.10",
"astro-icon": "^0.8.0",
"astro-netlify-cms": "^0.5.3",
diff --git a/siteconfig.json b/siteconfig.json
new file mode 100644
index 0000000..a46f94a
--- /dev/null
+++ b/siteconfig.json
@@ -0,0 +1,7 @@
+{
+ "globalTitle": "Sergey Yarkov",
+ "articles": {
+ "recentLimit": 5
+ },
+ "isSiteUnderConstruction": false
+}
\ No newline at end of file
diff --git a/src/components/ArticleComments.astro b/src/components/ArticleComments.astro
index 3b5543b..4f371ea 100644
--- a/src/components/ArticleComments.astro
+++ b/src/components/ArticleComments.astro
@@ -38,6 +38,10 @@ const { url, id } = Astro.props as Props;
window.addEventListener(
"onthemetoggled",
() =>
- document.readyState == "complete" && setTimeout(() => DISQUS.reset({ reload: true, config: disqus_config }), 100)
+ document.readyState == "complete" &&
+ setTimeout(
+ () => "DISQUS" in window && DISQUS.reset({ reload: true, config: disqus_config }),
+ 100
+ )
);
diff --git a/src/components/ArticleContent.astro b/src/components/ArticleContent.astro
new file mode 100644
index 0000000..6ef94bc
--- /dev/null
+++ b/src/components/ArticleContent.astro
@@ -0,0 +1,225 @@
+
+
+
diff --git a/src/components/ArticleContent/ArticleContent.astro b/src/components/ArticleContent/ArticleContent.astro
deleted file mode 100644
index 27cc78d..0000000
--- a/src/components/ArticleContent/ArticleContent.astro
+++ /dev/null
@@ -1,5 +0,0 @@
----
-import "./ArticleContent.scss";
----
-
-
diff --git a/src/components/ArticleContent/ArticleContent.scss b/src/components/ArticleContent/ArticleContent.scss
deleted file mode 100644
index df2d334..0000000
--- a/src/components/ArticleContent/ArticleContent.scss
+++ /dev/null
@@ -1,221 +0,0 @@
-.article-content {
- & h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- margin-top: 3rem;
- margin-bottom: 1rem;
- padding-bottom: 5px;
- }
-
- & p,
- em,
- q {
- line-height: var(--line-height-base);
- font-size: var(--font-size-lg);
- }
-
- & p {
- margin: 1.5rem 0;
- }
-
- & ul,
- ol {
- padding-left: 1.5rem;
- line-height: var(--line-height-base);
- margin: 1.5rem 0;
- & li {
- font-size: var(--font-size-lg);
- line-height: var(--line-height-base);
- margin-bottom: 0.5rem;
- padding-left: 0.25rem;
- }
- }
-
- & q {
- font-style: italic;
- quotes: "« " " »";
- }
-
- & a {
- color: var(--font-color);
- text-decoration: underline;
- text-decoration-color: var(--color-blue-500);
- text-underline-offset: 2.2px;
- text-decoration-thickness: 2px;
- font-weight: 500;
- &:hover {
- color: var(--color-blue-500);
- text-decoration-thickness: 2px;
- }
- }
-
- & figure {
- margin: 0 0 1em;
- & figcaption {
- color: var(--color-gray-400);
- }
- }
-
- & hr {
- background-color: var(--border-color);
- margin: 40px 0;
- border: none;
- height: 1px;
- }
-
- & pre {
- font-size: var(--font-size-sm);
- border-radius: var(--border-radius-md);
- }
-
- & :not(pre) > code {
- -webkit-font-smoothing: subpixel-antialiased;
- background: var(--background-inline-code);
- border-radius: var(--border-radius-lg);
- font-size: 1rem;
- font-weight: 500;
- font-family: "IBM Plex Mono", monospace;
- padding: 0.2rem 0.3rem;
- }
-
- & figcaption {
- font-style: italic;
- font-size: 1em;
- text-align: center;
- margin: 0.7rem 0;
- }
-
- & .table-wrapper {
- overflow-x: auto;
- margin-bottom: 1.25rem;
- }
-
- & table {
- display: table;
- border-radius: var(--border-radius-md);
- min-width: 100%;
- font-size: var(--font-size-md);
- border: 1px solid var(--border-color);
- border-collapse: separate;
- border-spacing: 0;
- margin: 5px 0;
- & thead th {
- background-color: var(--background-card);
- border-top-left-radius: var(--border-radius-md);
- border-top-right-radius: var(--border-radius-md);
- }
- & td,
- th {
- border-bottom: 1px solid var(--border-color);
- padding: 0.5rem;
- text-align: left;
- }
- & tbody tr:last-child td {
- border: none;
- }
- }
-
- & li {
- list-style: disc;
- & li {
- list-style-type: circle;
- }
- &::marker {
- color: var(--color-blue-500);
- font-size: 1.3rem;
- line-height: var(--line-height-none);
- }
- }
-
- & blockquote {
- margin: 1.5rem 0;
- font-style: italic;
- border-left: 0.25rem solid var(--border-color);
- padding-left: 1rem;
- }
-
- & .heading-wrapper {
- border-bottom: 1px solid var(--border-color);
- margin: 3rem 0 1rem 0;
- padding-bottom: 0.35rem;
-
- & h2 {
- font-size: var(--font-size-2xl);
- }
-
- & h3 {
- font-size: var(--font-size-xl);
- }
-
- & h4 {
- font-size: var(--font-size-lg);
- }
-
- & h1,
- h2,
- h3,
- h4,
- h5,
- h6 {
- margin: 0;
- }
- }
-
- & .heading-wrapper {
- display: flex;
- align-items: center;
- flex-direction: row-reverse;
- justify-content: flex-end;
- margin-inline-start: 1px;
- & .anchor-link {
- position: relative;
- display: inline-flex;
- text-decoration: none;
- justify-content: center;
- align-items: center;
- opacity: 0;
- & .anchor-icon {
- position: absolute;
- left: -25px;
- top: -13px;
- }
- & svg {
- vertical-align: middle;
- }
- }
- & .anchor-label {
- position: absolute;
- width: 0;
- height: 0;
- padding: 0;
- overflow: hidden;
- white-space: nowrap;
- }
- &:hover {
- & .anchor-link {
- opacity: 1;
- }
- }
- }
- & .languages-available {
- margin: 25px 0;
- font-size: var(--font-size-lg);
- }
-}
-
-@media screen and (max-width: 800px) {
- .article-content {
- & .heading-wrapper {
- flex-direction: row;
- justify-content: flex-start;
- & .anchor-link {
- & .anchor-icon {
- left: 5px;
- }
- }
- }
- }
-}
diff --git a/src/components/ArticleCover.astro b/src/components/ArticleCover.astro
new file mode 100644
index 0000000..e1cb212
--- /dev/null
+++ b/src/components/ArticleCover.astro
@@ -0,0 +1,34 @@
+---
+import { Picture } from "@astrojs/image/components";
+
+export interface Props {
+ src: string;
+ alt?: string;
+}
+
+const { src, alt } = Astro.props as Props;
+---
+
+
+
+
diff --git a/src/components/ArticleItem.astro b/src/components/ArticleItem.astro
index dc5f764..fd949ca 100644
--- a/src/components/ArticleItem.astro
+++ b/src/components/ArticleItem.astro
@@ -1,29 +1,44 @@
---
-import { getLanguageFromURL } from "@i18n/utils";
+import type { CollectionEntry } from "astro:content";
+import slugify from "@sindresorhus/slugify";
+import { URL_BLOG_PREFIX } from "@root/pages/[...blog].astro";
import { DEFAULT_LANGUAGE } from "@root/constants";
+import { getLanguageFromURL } from "@i18n/utils";
import { createDateFormatter } from "@root/utils";
export interface Props {
- href: string;
- title: string;
- date: Date;
+ entry: CollectionEntry<"blog">;
}
-const lang = getLanguageFromURL(Astro.url.pathname);
-// const isNonDefaultLanguage = DEFAULT_LANGUAGE !== lang;
-
-const { href, title, date } = Astro.props as Props;
+const pageLang = getLanguageFromURL(Astro.url.pathname);
+const {
+ entry: {
+ id,
+ data: { title, pubDate },
+ },
+} = Astro.props as Props;
+const slug = slugify(title, { lowercase: true });
+const articleLang = id.split("/")[0];
---
-
-
+
+
{title}
-
+ {articleLang !== pageLang && {articleLang.toLocaleUpperCase()} }
-
- {createDateFormatter(lang).format(date)}
+
+ {createDateFormatter(pageLang).format(pubDate)}
diff --git a/src/components/ArticlePost/ArticlePost.astro b/src/components/ArticlePost.astro
similarity index 51%
rename from src/components/ArticlePost/ArticlePost.astro
rename to src/components/ArticlePost.astro
index 043d370..2d5f37f 100644
--- a/src/components/ArticlePost/ArticlePost.astro
+++ b/src/components/ArticlePost.astro
@@ -1,23 +1,24 @@
---
-import { Picture } from "@astrojs/image/components";
+import type { CollectionEntry } from "astro:content";
import { Icon } from "astro-icon";
import { createDateFormatter } from "@root/utils";
-// import { isURL } from "@utils/string";
+import ArticleCover from "@components/ArticleCover.astro";
import ArticleComments from "@components/ArticleComments.astro";
// import TranslatedLink from "../TranslatedLink";
-import type { CollectionEntry } from "astro:content";
-// import { useTranslation } from "@root/i18n/utils";
-import "./ArticlePost.scss";
+// import { useTranslation } from "@i18n/utils";
+
export type Props = {
article: CollectionEntry<"blog">;
lang: string;
};
+
const { article, lang } = Astro.props as Props;
const canonicalUrl = new URL(Astro.url.pathname, Astro.site);
const {
data: { coverImage, title, author, description, tags, pubDate },
slug,
} = article;
+
// const t = useTranslation(Astro);
---
@@ -53,24 +54,7 @@ const {
>
{author}
- {
- coverImage && (
-
- )
- }
+ {coverImage && }
{description}
@@ -81,8 +65,9 @@ const {
-
+
+
diff --git a/src/components/ArticlePost/ArticlePost.scss b/src/components/ArticlePost/ArticlePost.scss
deleted file mode 100644
index 2b5741c..0000000
--- a/src/components/ArticlePost/ArticlePost.scss
+++ /dev/null
@@ -1,92 +0,0 @@
-.article {
- & header {
- & div:nth-child(1) {
- display: flex;
- justify-content: space-between;
- align-items: center;
- & .views {
- display: flex;
- align-items: center;
- & span {
- margin-left: 3.5px;
- font-size: var(--font-size-sm);
- color: var(--font-color-grayer);
- }
- }
- }
- & .heading {
- margin-top: 1.125rem;
-
- & h1 {
- font-weight: 600;
- font-size: 2.125rem;
- }
-
- & p {
- font-size: 1.125rem;
- line-height: var(--line-height-base);
- }
- }
-
- & .tags {
- font-size: var(--font-size-sm);
- text-transform: uppercase;
- & ul {
- display: flex;
- flex-wrap: wrap;
- column-gap: 7px;
- row-gap: 7px;
- }
- }
-
- & .published {
- margin-bottom: 1.25em;
- color: var(--font-color-gray);
- }
- }
-
- & .cover {
- margin: 20px 0;
- & figure {
- margin: 0;
- }
- }
-
- & .description p {
- line-height: var(--line-height-base);
- font-size: var(--font-size-lg);
- }
-
- & footer {
- margin-top: 5rem;
- }
-
- & img {
- border-radius: var(--border-radius-lg);
- display: block;
- margin: 0 auto;
- max-width: 100%;
- height: auto;
-
- &:not([src*=".svg"]) {
- filter: var(--image-filter);
- }
- }
-}
-
-@media screen and (max-width: 560px) {
- .article {
- & header {
- & div:nth-child(1) {
- flex-direction: column;
- align-items: flex-start;
- & .tags {
- margin-bottom: 15px;
- }
- }
- & .heading h1 {
- font-size: 2rem;
- }
- }
- }
-}
diff --git a/src/components/BaseHead.astro b/src/components/BaseHead.astro
index b1cb283..73c3c72 100644
--- a/src/components/BaseHead.astro
+++ b/src/components/BaseHead.astro
@@ -9,7 +9,6 @@ export interface Props {
}
const canonicalURL = new URL(Astro.url.pathname, Astro.site);
-
const { title, description } = Astro.props;
---
diff --git a/src/components/RecentArticles.astro b/src/components/RecentArticles.astro
index aa220d6..b51e126 100644
--- a/src/components/RecentArticles.astro
+++ b/src/components/RecentArticles.astro
@@ -2,11 +2,12 @@
import type { CollectionEntry } from "astro:content";
import ArticleItem from "@components/ArticleItem.astro";
import EmptyList from "@components/EmptyList.astro";
+import siteconfig from "siteconfig.json";
export interface Props {
articles: CollectionEntry<"blog">[];
length?: number | undefined;
}
-const { articles, length = 5 } = Astro.props as Props;
+const { articles, length = siteconfig.articles.recentLimit } = Astro.props as Props;
const isEmpty = articles.length === 0;
---
@@ -19,11 +20,7 @@ const isEmpty = articles.length === 0;
{
!isEmpty ? (
- articles
- .slice(0, length)
- .map((article) => (
-
- ))
+ articles.slice(0, length).map((article) =>
)
) : (
)
diff --git a/src/components/SkillsBlock.astro b/src/components/SkillsBlock.astro
new file mode 100644
index 0000000..2ea647e
--- /dev/null
+++ b/src/components/SkillsBlock.astro
@@ -0,0 +1,69 @@
+---
+import { Icon } from "astro-icon";
+import type { CollectionEntry } from "astro:content";
+
+export interface Props {
+ data: CollectionEntry<"skills">["data"];
+}
+
+const {
+ data: { title, list },
+} = Astro.props as Props;
+---
+
+
+
+
{title}
+
+
+
+ {
+ list.map((entry) => (
+
+ {entry.icon && }
+ {entry.title}
+
+ ))
+ }
+
+
+
+
+
diff --git a/src/components/SkillsList.astro b/src/components/SkillsList.astro
new file mode 100644
index 0000000..c8cd1ec
--- /dev/null
+++ b/src/components/SkillsList.astro
@@ -0,0 +1,20 @@
+---
+---
+
+
+
diff --git a/src/constants.ts b/src/constants.ts
index 1cf32ee..4385d92 100644
--- a/src/constants.ts
+++ b/src/constants.ts
@@ -1,13 +1,10 @@
+import siteconfig from "../siteconfig.json";
+
export const DEFAULT_LANGUAGE: LanguageKeys = "ru";
-
-/* Show banner about website development */
-export const IS_SITE_UNDER_CONSTRUCTION =
- import.meta.env.IS_SITE_UNDER_CONSTRUCTION === "true" ? true : false;
-
+export const IS_SITE_UNDER_CONSTRUCTION = siteconfig.isSiteUnderConstruction;
export const SUPPORTED_LANGUAGES: SupportedLanguages = ["ru", "en"];
-
export const SITE_METADATA: SiteMetadataType = {
- title: "Sergey Yarkov",
+ title: siteconfig.globalTitle,
name: "yarkov.tech",
author: "Sergey Yarkov",
themeColor: "#1e2327",
diff --git a/src/content/authors/en/сергей-ярков.md b/src/content/authors/en/сергей-ярков.md
new file mode 100644
index 0000000..ecc73c2
--- /dev/null
+++ b/src/content/authors/en/сергей-ярков.md
@@ -0,0 +1,24 @@
+---
+firstName: Sergey
+lastName: Yarkov
+---
+My name is Sergey and I am a web developer. My main activity is creating web sites. I am interested in areas such as programming, embedded systems, and electronics.
+I started making web sites in 2017, starting with simple HTML pages, and in 2019 I started learning programming. At present, I have experience in **full-stack** web development of client-server applications that solve a wide range of tasks.
+Some of my personal [projects](/projects/) I put in public access on [Github](https://github.com/sergeyyarkov).
+
+## Purpose of this site
+
+I originally created this website for myself, to consolidate my knowledge by writing articles.
+Since 2022, I have been posting materials on this website, and now at any time I can return to any topic and learn it again.
+My articles can also help someone with mastering a particular topic. The main direction of this site is IT,
+and [here](/articles/) I publish materials on topics that interest me, as well as talk about my [projects](/projects/).
+I am absolutely calm about any criticism and I do not claim to be the best programmer in the world,
+so do not judge the materials of this resource harshly.
+
+## Skills
+
+This list shows the skills and technologies that I have used/use in my projects.
+For creating web projects, I use **Node.js** and the **Adonis.js** framework for the server-side.
+For the client-side, I develop using **React.js** or **Alpine.js**.
+
+
this website is made using the [**Astro.js**](https://astro.build) framework and [**Solid.js**](https://www.solidjs.com/) library.
\ No newline at end of file
diff --git a/src/content/authors/ru/сергей-ярков.md b/src/content/authors/ru/сергей-ярков.md
new file mode 100644
index 0000000..960bb1a
--- /dev/null
+++ b/src/content/authors/ru/сергей-ярков.md
@@ -0,0 +1,28 @@
+---
+firstName: Сергей
+lastName: Ярков
+---
+Мое имя **Сергей** я являюсь веб-разработчиком. Основной деятельностью моей работы является создание веб-сайтов.
+Мне интересны такие сферы как программирование, встраиваемые системы и электроника.
+Веб-сайты я начал делать с 2017 года начиная с верстки простых HTML страничек и с 2019 года я начал
+обучаться программированием и на сегодняшний момент я имею опыт в **full-stack** веб-разработке клиент-серверных приложений,
+которые решают самые разные задачи.
+Некоторые из своих личных [проектов](/projects/) я выкладываю в общий доступ на [Github](https://github.com/sergeyyarkov).
+
+## Зачем этот сайт
+
+Первоначально я создал этот сайт для себя, чтобы закреплять свои знания путем написания статей. С 2022 года я начал
+выкладывать материалы на этот сайт и сейчас в любой момент я могу вернуться к какой-либо теме и еще раз её усвоить.
+Мои статьи также смогут кому-то помочь с освоением какой-либо темы.
+Главным направлением этого сайта является IT, и [здесь](/articles/) я публикую материалы на темы, которые меня интересуют,
+а также рассказываю о своих [проектах](/projects/).
+Я отношусь абсолютно спокойно к любой критике и я не претендую на звание лучшего программиста в мире, поэтому
+не судите строго материалы этого ресурса.
+
+## Навыки
+
+Этот список показывает имеющиеся у меня навыки и технологии которые я когда-либо использовал/использую в своих проектах.
+Для создания веб-проектов в качестве серверной части я использую **Node.js** и фреймворк **Adonis.js**.
+Клиентскую часть я разрабатываю на **React.js** или **Alpine.js**.
+
+
этот веб-сайт сделан с помощью фреймворка **[Astro.js](https://astro.build)** и библиотеки **[Solid.js](https://www.solidjs.com/)**
\ No newline at end of file
diff --git a/src/content/authors/sergey-yarkov.md b/src/content/authors/sergey-yarkov.md
deleted file mode 100644
index 2c2d9bb..0000000
--- a/src/content/authors/sergey-yarkov.md
+++ /dev/null
@@ -1,4 +0,0 @@
----
-firstName: Sergey
-lastName: Yarkov
----
diff --git a/src/content/blog/en/использование-webserial-api-для-общения-с-микроконтроллером.md b/src/content/blog/en/использование-webserial-api-для-общения-с-микроконтроллером.md
new file mode 100644
index 0000000..b0b6dee
--- /dev/null
+++ b/src/content/blog/en/использование-webserial-api-для-общения-с-микроконтроллером.md
@@ -0,0 +1,17 @@
+---
+coverImage: /media/serial-port.jpg
+draft: false
+author: Sergey Yarkov
+title: Using the WebSerial API to communicate with the microcontroller
+description: We will talk about what is WebSerial API, how it can be used in a
+ browser to read and write data to a serial device and where it can be applied.
+tags:
+ - JavaScript
+ - AVR
+ - WebSerial API
+ - Tutorial
+pubDate: 2022-11-04T21:00:00.000Z
+updatedDate: 2023-02-13T16:34:23.326Z
+---
+
+# ...
diff --git a/src/content/blog/en/управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру.md b/src/content/blog/en/управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру.md
new file mode 100644
index 0000000..25f1aaa
--- /dev/null
+++ b/src/content/blog/en/управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру.md
@@ -0,0 +1,16 @@
+---
+coverImage: null
+draft: false
+author: Sergey Yarkov
+title: 74HC595 shift register control by microcontroller
+description: This tutorial shows how to control the shift register of the
+ 74HC595 in conjunction with the AVR microcontroller.
+tags:
+ - AVR
+ - Digital Electronics
+ - Tutorial
+pubDate: 2023-02-14T19:23:55.622Z
+updatedDate: 2023-02-14T19:23:55.646Z
+---
+
+...
diff --git a/src/content/blog/ispolzovanie-webserial-api-dlya-obshcheniya-s-mikrokontrollerom.md b/src/content/blog/ru/использование-webserial-api-для-общения-с-микроконтроллером.md
similarity index 100%
rename from src/content/blog/ispolzovanie-webserial-api-dlya-obshcheniya-s-mikrokontrollerom.md
rename to src/content/blog/ru/использование-webserial-api-для-общения-с-микроконтроллером.md
diff --git a/src/content/blog/ru/управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру.md b/src/content/blog/ru/управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру.md
new file mode 100644
index 0000000..c4cd23a
--- /dev/null
+++ b/src/content/blog/ru/управление-и-подключение-сдвигового-регистра-74hc595-к-микрокотнороллеру.md
@@ -0,0 +1,15 @@
+---
+draft: false
+author: Sergey Yarkov
+title: Управление сдвиговым регистром 74HC595 микрокотнороллером
+description: В этом туториале рассматривается то, как управлять сдвиговым
+ регистром 74HC595 в связке с микроконтроллером AVR.
+tags:
+ - AVR
+ - Digital Electronics
+ - Tutorial
+pubDate: 2023-02-14T19:23:55.622Z
+updatedDate: 2023-02-14T19:23:55.646Z
+---
+
+...
diff --git a/src/content/config.ts b/src/content/config.ts
index c247b89..bee3486 100644
--- a/src/content/config.ts
+++ b/src/content/config.ts
@@ -3,7 +3,8 @@ import { defineCollection, z } from "astro:content";
const blog = defineCollection({
schema: z.object({
title: z.string(),
- coverImage: z.string().optional(),
+ draft: z.boolean().optional(),
+ coverImage: z.string().nullable().optional(),
author: z.string(),
tags: z.string().array().optional(),
description: z.string(),
@@ -16,7 +17,6 @@ const blog = defineCollection({
.or(z.date())
.optional()
.transform((str) => (str ? new Date(str) : undefined)),
- draft: z.boolean(),
}),
});
@@ -42,7 +42,6 @@ const projects = defineCollection({
sourceUrl: z.string(),
demoUrl: z.string().nullable().optional(),
articleUrl: z.string().nullable().optional(),
- draft: z.boolean(),
}),
});
diff --git a/src/content/projects/en/devthread.md b/src/content/projects/en/devthread.md
index cfcc406..f383179 100644
--- a/src/content/projects/en/devthread.md
+++ b/src/content/projects/en/devthread.md
@@ -1,6 +1,5 @@
---
icon: triangle_filled
-draft: false
title: devthread
year: 2021
description: Static website for publishing various articles, developed with
diff --git a/src/content/projects/en/digital-store.md b/src/content/projects/en/digital-store.md
index 5c927d3..7a2c8dd 100644
--- a/src/content/projects/en/digital-store.md
+++ b/src/content/projects/en/digital-store.md
@@ -1,6 +1,5 @@
---
icon: round-shop-two
-draft: false
title: digital-store
year: 2019
description: Customizable online store with control panel for selling digital goods
diff --git a/src/content/projects/en/educt.md b/src/content/projects/en/educt.md
index 5091d5c..c2aacce 100644
--- a/src/content/projects/en/educt.md
+++ b/src/content/projects/en/educt.md
@@ -1,6 +1,5 @@
---
icon: round-school
-draft: false
title: educt
year: 2022
description: Learning Management System (LMS) to publish your courses, lectures, lessons
diff --git a/src/content/projects/en/memory-led-game.md b/src/content/projects/en/memory-led-game.md
index fe9098c..04fef72 100644
--- a/src/content/projects/en/memory-led-game.md
+++ b/src/content/projects/en/memory-led-game.md
@@ -1,6 +1,5 @@
---
icon: chip
-draft: false
title: memory-led-game
year: 2022
description: Analogue of the popular game "Simon says" on the AVR microcontroller
diff --git a/src/content/projects/en/node-docker-example.md b/src/content/projects/en/node-docker-example.md
index a7e54cf..913f34e 100644
--- a/src/content/projects/en/node-docker-example.md
+++ b/src/content/projects/en/node-docker-example.md
@@ -1,6 +1,5 @@
---
icon: nodejs
-draft: false
title: node-docker-example
year: 2022
description: An example of using Docker to deploy a Node.js application
diff --git a/src/content/projects/en/react-chat-app.md b/src/content/projects/en/react-chat-app.md
index 97527b8..60dce0e 100644
--- a/src/content/projects/en/react-chat-app.md
+++ b/src/content/projects/en/react-chat-app.md
@@ -1,6 +1,5 @@
---
icon: chat
-draft: false
title: react-chat-app
year: 2021
description: Client-server web chat application developed with Node.js and Socket.io
diff --git a/src/content/projects/en/web-serial-example.md b/src/content/projects/en/web-serial-example.md
index 1c9a973..09fe2d1 100644
--- a/src/content/projects/en/web-serial-example.md
+++ b/src/content/projects/en/web-serial-example.md
@@ -1,6 +1,5 @@
---
icon: serial
-draft: false
title: web-serial-example
year: 2022
description: An example of using the Web Serial API to interact with the
diff --git a/src/content/projects/en/yarkov-tech.md b/src/content/projects/en/yarkov-tech.md
index 5f9ab7c..ca9cdcf 100644
--- a/src/content/projects/en/yarkov-tech.md
+++ b/src/content/projects/en/yarkov-tech.md
@@ -1,6 +1,5 @@
---
icon: book
-draft: false
title: yarkov.tech
year: 2023
description: My personal website where you can find information about me and a
diff --git a/src/content/projects/ru/devthread.md b/src/content/projects/ru/devthread.md
index 4874eec..0b1c5dd 100644
--- a/src/content/projects/ru/devthread.md
+++ b/src/content/projects/ru/devthread.md
@@ -1,6 +1,5 @@
---
icon: triangle_filled
-draft: false
title: devthread
year: 2021
description: Статический веб-сайт для публикации различных статей, разработанный
diff --git a/src/content/projects/ru/digital-store.md b/src/content/projects/ru/digital-store.md
index 3b9f2a2..5313886 100644
--- a/src/content/projects/ru/digital-store.md
+++ b/src/content/projects/ru/digital-store.md
@@ -1,6 +1,5 @@
---
icon: round-shop-two
-draft: false
title: digital-store
year: 2019
description: Настраиваемый интернет-магазин с панелью управления для продажи
diff --git a/src/content/projects/ru/educt.md b/src/content/projects/ru/educt.md
index f2e3562..2681565 100644
--- a/src/content/projects/ru/educt.md
+++ b/src/content/projects/ru/educt.md
@@ -1,6 +1,5 @@
---
icon: round-school
-draft: false
title: educt
year: 2022
description: Система управления обучением (LMS) для публикации ваших курсов, лекций, уроков
diff --git a/src/content/projects/ru/memory-led-game.md b/src/content/projects/ru/memory-led-game.md
index 6ef27af..2a47d08 100644
--- a/src/content/projects/ru/memory-led-game.md
+++ b/src/content/projects/ru/memory-led-game.md
@@ -1,6 +1,5 @@
---
icon: chip
-draft: false
title: memory-led-game
year: 2022
description: Аналог популярной игры "Саймон говорит" на AVR микроконтроллере
diff --git a/src/content/projects/ru/node-docker-example.md b/src/content/projects/ru/node-docker-example.md
index 1a1e68e..50ac0b0 100644
--- a/src/content/projects/ru/node-docker-example.md
+++ b/src/content/projects/ru/node-docker-example.md
@@ -1,6 +1,5 @@
---
icon: nodejs
-draft: false
title: node-docker-example
year: 2022
description: Пример использования Docker для развертывания Node.js приложения
diff --git a/src/content/projects/ru/react-chat-app.md b/src/content/projects/ru/react-chat-app.md
index be4524f..e2e7244 100644
--- a/src/content/projects/ru/react-chat-app.md
+++ b/src/content/projects/ru/react-chat-app.md
@@ -1,6 +1,5 @@
---
icon: chat
-draft: false
title: react-chat-app
year: 2021
description: Клиент-серверное веб приложение чата разработанное при помощи
diff --git a/src/content/projects/ru/web-serial-example.md b/src/content/projects/ru/web-serial-example.md
index 04e68d3..fcd5aa3 100644
--- a/src/content/projects/ru/web-serial-example.md
+++ b/src/content/projects/ru/web-serial-example.md
@@ -1,6 +1,5 @@
---
icon: serial
-draft: false
title: web-serial-example
year: 2022
description: Пример использования Web Serial API для взаимодействия с
diff --git a/src/content/projects/ru/yarkov-tech.md b/src/content/projects/ru/yarkov-tech.md
index 6b36f25..ff9f147 100644
--- a/src/content/projects/ru/yarkov-tech.md
+++ b/src/content/projects/ru/yarkov-tech.md
@@ -1,6 +1,5 @@
---
icon: book
-draft: false
title: yarkov.tech
year: 2023
description: Мой персональный веб-сайт где находятся информация обо мне и список
diff --git a/src/content/site-settings.md b/src/content/site-settings.md
deleted file mode 100644
index 500621c..0000000
--- a/src/content/site-settings.md
+++ /dev/null
@@ -1,5 +0,0 @@
----
-globalTitle: yarkov.tech
-articles:
- recentLimit: 5
----
diff --git a/src/layouts/article.astro b/src/layouts/article.astro
index 67d5fd5..2cf041a 100644
--- a/src/layouts/article.astro
+++ b/src/layouts/article.astro
@@ -3,8 +3,8 @@ import type { CollectionEntry } from "astro:content";
import { DEFAULT_LANGUAGE, SITE_METADATA } from "@root/constants";
import BaseHead from "@components/BaseHead.astro";
import BaseLayout from "@components/BaseLayout.astro";
-import ArticleContent from "@components/ArticleContent/ArticleContent.astro";
-import ArticlePost from "@components/ArticlePost/ArticlePost.astro";
+import ArticleContent from "@components/ArticleContent.astro";
+import ArticlePost from "@components/ArticlePost.astro";
import OpenGraph from "@components/OpenGraph.astro";
export interface Props {
diff --git a/src/pages/[...blog].astro b/src/pages/[...blog].astro
new file mode 100644
index 0000000..2e820f1
--- /dev/null
+++ b/src/pages/[...blog].astro
@@ -0,0 +1,36 @@
+---
+import { CollectionEntry, getCollection } from "astro:content";
+import ArticleLayout from "@root/layouts/article.astro";
+import { DEFAULT_LANGUAGE } from "@root/constants";
+import slugify from "@sindresorhus/slugify";
+
+export const URL_BLOG_PREFIX = "blog";
+
+/**
+ * Generate articles pages from `blog` collection.
+ * The final url will be `http://website.com/blog/2023-01-01/my-article` with default language
+ * and `http://website.com/{language-code}/blog/2023-01-01/my-article` with other languages.
+ */
+export async function getStaticPaths() {
+ const collection = await getCollection("blog", (e) => !e.data.draft);
+ return collection.map((article) => {
+ const [languageCode] = article.slug.split("/");
+ const slug = slugify(article.data.title, { lowercase: true });
+ const pubDate = article.data.pubDate.toISOString().split("T")[0];
+ const url =
+ DEFAULT_LANGUAGE !== languageCode
+ ? `${languageCode}/${URL_BLOG_PREFIX}/${pubDate}/${slug}`
+ : `${URL_BLOG_PREFIX}/${pubDate}/${slug}`;
+
+ return { params: { blog: url }, props: { article } };
+ });
+}
+
+type Props = { article: CollectionEntry<"blog"> };
+
+const { Content } = await Astro.props.article.render();
+---
+
+
+
+
diff --git a/src/pages/[...slug].astro b/src/pages/[...slug].astro
deleted file mode 100644
index 62dec71..0000000
--- a/src/pages/[...slug].astro
+++ /dev/null
@@ -1,22 +0,0 @@
----
-import { CollectionEntry, getCollection } from "astro:content";
-import ArticleLayout from "@root/layouts/article.astro";
-
-export async function getStaticPaths() {
- const articles = await getCollection("blog");
- return articles
- .filter((a) => !a.data.draft)
- .map((article) => ({
- params: { slug: `articles/${article.slug}` },
- props: { article },
- }));
-}
-
-type Props = { article: CollectionEntry<"blog"> };
-
-const { Content } = await Astro.props.article.render();
----
-
-
-
-
diff --git a/src/pages/[lang]/about.astro b/src/pages/[lang]/about.astro
index ea752f0..f4624be 100644
--- a/src/pages/[lang]/about.astro
+++ b/src/pages/[lang]/about.astro
@@ -3,6 +3,7 @@ import { getLanguageKeys } from "@i18n/utils";
import { DEFAULT_LANGUAGE } from "@root/constants";
import About from "@templates/About.astro";
+// TODO: do not generate pages without required data
export function getStaticPaths() {
return getLanguageKeys()
.filter((lang) => lang !== DEFAULT_LANGUAGE)
diff --git a/src/templates/About.astro b/src/templates/About.astro
index 0573bc9..245312f 100644
--- a/src/templates/About.astro
+++ b/src/templates/About.astro
@@ -1,26 +1,28 @@
---
-import PageLayout from "@layouts/default.astro";
+import { getCollection, getEntryBySlug } from "astro:content";
import { getLanguageFromURL } from "@i18n/utils";
-// import { useTranslation } from "@i18n/utils";
-// import * as API from "@root/lib/api";
+import PageLayout from "@layouts/default.astro";
import PageHeading from "@components/PageHeading.astro";
-// import SkillsList from "@components/SkillsList";
-// import SkillsBlock from "@components/SkillsBlock";
-// import ArticleContent from "@components/ArticleContent";
-const lang = getLanguageFromURL(Astro.url.pathname);
+import SkillsList from "@components/SkillsList.astro";
+import SkillsBlock from "@components/SkillsBlock.astro";
+import ArticleContent from "@components/ArticleContent.astro";
+
+const pageLang = getLanguageFromURL(Astro.url.pathname);
+const skills = await getCollection("skills", (e) => e.id.startsWith(`${pageLang}/`));
+const about = await getEntryBySlug("authors", `${pageLang}/сергей-ярков`);
+const data = await about?.render();
+
// const t = useTranslation(Astro);
-// const data = await API.fetchAboutMe(Astro);
-// const { skills } = SITE_METADATA;
---
-
+
-
-
+
+
+ {skills.map((block) => )}
+
diff --git a/src/templates/Home.astro b/src/templates/Home.astro
index 053ed26..443bea2 100644
--- a/src/templates/Home.astro
+++ b/src/templates/Home.astro
@@ -1,15 +1,15 @@
---
+import { getCollection } from "astro:content";
import PageLayout from "@layouts/default.astro";
import Splash from "@components/Splash/Splash.astro";
import SplashHeading from "@root/components/Splash/SplashHeading.astro";
import SplashLinks from "@root/components/Splash/SplashLinks.astro";
import SplashLink from "@root/components/Splash/SplashLink.astro";
-import { getCollection } from "astro:content";
import RecentArticles from "@root/components/RecentArticles.astro";
-const articles = (await getCollection("blog"))
- .filter((p) => !p.data.draft)
- .sort((a, b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf());
+const articles = (await getCollection("blog", (e) => !e.data.draft)).sort(
+ (a, b) => a.data.pubDate.valueOf() - b.data.pubDate.valueOf()
+);
---
diff --git a/src/templates/NotFound.astro b/src/templates/NotFound.astro
index 31b8bd4..ec66ccd 100644
--- a/src/templates/NotFound.astro
+++ b/src/templates/NotFound.astro
@@ -8,6 +8,6 @@ const lang = getLanguageFromURL(Astro.url.pathname);
404
-
{"Страница не найдена"}
+
{"Страницу которую вы пытаетесь найти не существует."}