feat: post process ghost html with rehype
All checks were successful
continuous-integration/drone/push Build is passing

This commit is contained in:
Damillora 2022-07-26 00:11:32 +07:00
parent e7a6a1137e
commit 69c01e02fd
7 changed files with 461 additions and 100 deletions

View File

@ -25,8 +25,11 @@
"eslint": "^8.20.0", "eslint": "^8.20.0",
"eslint-config-prettier": "^8.5.0", "eslint-config-prettier": "^8.5.0",
"eslint-plugin-svelte3": "^4.0.0", "eslint-plugin-svelte3": "^4.0.0",
"hast-util-from-selector": "^2.0.0",
"prettier": "^2.7.1", "prettier": "^2.7.1",
"prettier-plugin-svelte": "^2.7.0", "prettier-plugin-svelte": "^2.7.0",
"rehype-parse": "^8.0.4",
"rehype-stringify": "^9.0.3",
"sass": "^1.54.0", "sass": "^1.54.0",
"svelte": "^3.49.0", "svelte": "^3.49.0",
"svelte-check": "^2.8.0", "svelte-check": "^2.8.0",
@ -35,11 +38,13 @@
"svelte2tsx": "^0.5.12", "svelte2tsx": "^0.5.12",
"tslib": "^2.4.0", "tslib": "^2.4.0",
"typescript": "^4.7.4", "typescript": "^4.7.4",
"vite": "^3.0.2" "unified": "^10.1.2",
"unist-util-visit": "^4.1.0",
"vite": "^3.0.3"
}, },
"type": "module", "type": "module",
"dependencies": { "dependencies": {
"@damillora/plachta": "^1.8.2", "@damillora/plachta": "^1.8.3",
"@tryghost/content-api": "^1.11.0", "@tryghost/content-api": "^1.11.0",
"fitvids": "^2.1.1", "fitvids": "^2.1.1",
"svelte-material-icons": "^2.0.2", "svelte-material-icons": "^2.0.2",

View File

@ -1,7 +1,7 @@
lockfileVersion: 5.3 lockfileVersion: 5.3
specifiers: specifiers:
'@damillora/plachta': ^1.8.2 '@damillora/plachta': ^1.8.3
'@sveltejs/adapter-auto': next '@sveltejs/adapter-auto': next
'@sveltejs/adapter-node': ^1.0.0-next.83 '@sveltejs/adapter-node': ^1.0.0-next.83
'@sveltejs/kit': next '@sveltejs/kit': next
@ -15,8 +15,11 @@ specifiers:
eslint-config-prettier: ^8.5.0 eslint-config-prettier: ^8.5.0
eslint-plugin-svelte3: ^4.0.0 eslint-plugin-svelte3: ^4.0.0
fitvids: ^2.1.1 fitvids: ^2.1.1
hast-util-from-selector: ^2.0.0
prettier: ^2.7.1 prettier: ^2.7.1
prettier-plugin-svelte: ^2.7.0 prettier-plugin-svelte: ^2.7.0
rehype-parse: ^8.0.4
rehype-stringify: ^9.0.3
sass: ^1.54.0 sass: ^1.54.0
svelte: ^3.49.0 svelte: ^3.49.0
svelte-check: ^2.8.0 svelte-check: ^2.8.0
@ -27,10 +30,12 @@ specifiers:
svelte2tsx: ^0.5.12 svelte2tsx: ^0.5.12
tslib: ^2.4.0 tslib: ^2.4.0
typescript: ^4.7.4 typescript: ^4.7.4
vite: ^3.0.2 unified: ^10.1.2
unist-util-visit: ^4.1.0
vite: ^3.0.3
dependencies: dependencies:
'@damillora/plachta': 1.8.2_svelte@3.49.0 '@damillora/plachta': 1.8.3_svelte@3.49.0
'@tryghost/content-api': 1.11.0 '@tryghost/content-api': 1.11.0
fitvids: 2.1.1 fitvids: 2.1.1
svelte-material-icons: 2.0.2_svelte@3.49.0 svelte-material-icons: 2.0.2_svelte@3.49.0
@ -39,7 +44,7 @@ dependencies:
devDependencies: devDependencies:
'@sveltejs/adapter-auto': 1.0.0-next.63 '@sveltejs/adapter-auto': 1.0.0-next.63
'@sveltejs/adapter-node': 1.0.0-next.83 '@sveltejs/adapter-node': 1.0.0-next.83
'@sveltejs/kit': 1.0.0-next.392_svelte@3.49.0+vite@3.0.2 '@sveltejs/kit': 1.0.0-next.393_svelte@3.49.0+vite@3.0.3
'@types/fitvids': 2.1.1 '@types/fitvids': 2.1.1
'@types/tryghost__content-api': 1.3.11 '@types/tryghost__content-api': 1.3.11
'@typescript-eslint/eslint-plugin': 5.30.7_f59730a40ab520cf82d095906622871f '@typescript-eslint/eslint-plugin': 5.30.7_f59730a40ab520cf82d095906622871f
@ -48,8 +53,11 @@ devDependencies:
eslint: 8.20.0 eslint: 8.20.0
eslint-config-prettier: 8.5.0_eslint@8.20.0 eslint-config-prettier: 8.5.0_eslint@8.20.0
eslint-plugin-svelte3: 4.0.0_eslint@8.20.0+svelte@3.49.0 eslint-plugin-svelte3: 4.0.0_eslint@8.20.0+svelte@3.49.0
hast-util-from-selector: 2.0.0
prettier: 2.7.1 prettier: 2.7.1
prettier-plugin-svelte: 2.7.0_prettier@2.7.1+svelte@3.49.0 prettier-plugin-svelte: 2.7.0_prettier@2.7.1+svelte@3.49.0
rehype-parse: 8.0.4
rehype-stringify: 9.0.3
sass: 1.54.0 sass: 1.54.0
svelte: 3.49.0 svelte: 3.49.0
svelte-check: 2.8.0_sass@1.54.0+svelte@3.49.0 svelte-check: 2.8.0_sass@1.54.0+svelte@3.49.0
@ -58,7 +66,9 @@ devDependencies:
svelte2tsx: 0.5.12_svelte@3.49.0+typescript@4.7.4 svelte2tsx: 0.5.12_svelte@3.49.0+typescript@4.7.4
tslib: 2.4.0 tslib: 2.4.0
typescript: 4.7.4 typescript: 4.7.4
vite: 3.0.2_sass@1.54.0 unified: 10.1.2
unist-util-visit: 4.1.0
vite: 3.0.3_sass@1.54.0
packages: packages:
@ -66,8 +76,8 @@ packages:
resolution: {integrity: sha512-B1/plF62pt+H2IJHvApK8fdOJAVsvojvacuac8x8s+JIyqbropMyqNqHTKLm3YD8ZFLGwYeFTudU+PQ7vGvBdA==} resolution: {integrity: sha512-B1/plF62pt+H2IJHvApK8fdOJAVsvojvacuac8x8s+JIyqbropMyqNqHTKLm3YD8ZFLGwYeFTudU+PQ7vGvBdA==}
dev: true dev: true
/@damillora/plachta/1.8.2_svelte@3.49.0: /@damillora/plachta/1.8.3_svelte@3.49.0:
resolution: {integrity: sha512-if4acS53wl1IxlPzLuNymnicGikyThT3yoKlk1sFT7ITdLjh/9bIA2okxiLw6nNaVZOO+F+VoCSXtoMLZJYKUg==} resolution: {integrity: sha512-JuxfOb/0lJs4+v6GAXQuodRQ+zUlwT/wwOJ6HvgosiOEGGZhPUm6lQGs2zvwC0mnuM7GS7BBdiVfZce/Egsfrw==}
dependencies: dependencies:
svelte-material-icons: 2.0.2_svelte@3.49.0 svelte-material-icons: 2.0.2_svelte@3.49.0
svelte-themes: 0.0.98 svelte-themes: 0.0.98
@ -189,7 +199,7 @@ packages:
resolution: {integrity: sha512-jIclgb58n3Uoo8TTudXSa7wmLP7Rn/ESLQS+zOUe0xsti5DG/eDhELTnSvkoSa2lJY21ym5rej/GSERRyeuBVw==} resolution: {integrity: sha512-jIclgb58n3Uoo8TTudXSa7wmLP7Rn/ESLQS+zOUe0xsti5DG/eDhELTnSvkoSa2lJY21ym5rej/GSERRyeuBVw==}
dependencies: dependencies:
'@cloudflare/workers-types': 3.14.1 '@cloudflare/workers-types': 3.14.1
esbuild: 0.14.49 esbuild: 0.14.50
worktop: 0.8.0-next.14 worktop: 0.8.0-next.14
dev: true dev: true
@ -197,7 +207,7 @@ packages:
resolution: {integrity: sha512-lIXY6KIgIFBz4+mdvilx9Ny8oFV7T2iVTKLirJayoI/SqPWGAcxklvWvjGfS4QT8rS9pWKDaKRUQM4M/gl8LlA==} resolution: {integrity: sha512-lIXY6KIgIFBz4+mdvilx9Ny8oFV7T2iVTKLirJayoI/SqPWGAcxklvWvjGfS4QT8rS9pWKDaKRUQM4M/gl8LlA==}
dependencies: dependencies:
'@iarna/toml': 2.2.5 '@iarna/toml': 2.2.5
esbuild: 0.14.49 esbuild: 0.14.50
set-cookie-parser: 2.5.0 set-cookie-parser: 2.5.0
tiny-glob: 0.2.9 tiny-glob: 0.2.9
dev: true dev: true
@ -212,31 +222,31 @@ packages:
resolution: {integrity: sha512-RV3HL7Ic7pGgIoBSHPwN1pBX96Km1X683oHImPHAKX9h/WOvJZ3bY5+IWNRcR8tx9rPB5gfMRg+msvPSBr3RVw==} resolution: {integrity: sha512-RV3HL7Ic7pGgIoBSHPwN1pBX96Km1X683oHImPHAKX9h/WOvJZ3bY5+IWNRcR8tx9rPB5gfMRg+msvPSBr3RVw==}
dependencies: dependencies:
'@vercel/nft': 0.20.1 '@vercel/nft': 0.20.1
esbuild: 0.14.49 esbuild: 0.14.50
transitivePeerDependencies: transitivePeerDependencies:
- encoding - encoding
- supports-color - supports-color
dev: true dev: true
/@sveltejs/kit/1.0.0-next.392_svelte@3.49.0+vite@3.0.2: /@sveltejs/kit/1.0.0-next.393_svelte@3.49.0+vite@3.0.3:
resolution: {integrity: sha512-od4rDJ/Soq0I7mda7sTbAnNKERHSDEGNa7QBpLA859xgBkwC1JnEIymYOh9dm+hMyHhB0bUoRoaur0qxKLqOOw==} resolution: {integrity: sha512-B7tCEcHJepsgJxY3jonOKhxGjB/58h9UWa7KZKvgSTswQOcuDZ9IXyQ1LRizc2BhcN2htUUVMuwU77NmM7jGFg==}
engines: {node: '>=16.9'} engines: {node: '>=16.9'}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
svelte: ^3.44.0 svelte: ^3.44.0
vite: ^3.0.0 vite: ^3.0.0
dependencies: dependencies:
'@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.49.0+vite@3.0.2 '@sveltejs/vite-plugin-svelte': 1.0.1_svelte@3.49.0+vite@3.0.3
chokidar: 3.5.3 chokidar: 3.5.3
sade: 1.8.1 sade: 1.8.1
svelte: 3.49.0 svelte: 3.49.0
vite: 3.0.2_sass@1.54.0 vite: 3.0.3_sass@1.54.0
transitivePeerDependencies: transitivePeerDependencies:
- diff-match-patch - diff-match-patch
- supports-color - supports-color
dev: true dev: true
/@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.49.0+vite@3.0.2: /@sveltejs/vite-plugin-svelte/1.0.1_svelte@3.49.0+vite@3.0.3:
resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==} resolution: {integrity: sha512-PorCgUounn0VXcpeJu+hOweZODKmGuLHsLomwqSj+p26IwjjGffmYQfVHtiTWq+NqaUuuHWWG7vPge6UFw4Aeg==}
engines: {node: ^14.18.0 || >= 16} engines: {node: ^14.18.0 || >= 16}
peerDependencies: peerDependencies:
@ -254,7 +264,7 @@ packages:
magic-string: 0.26.2 magic-string: 0.26.2
svelte: 3.49.0 svelte: 3.49.0
svelte-hmr: 0.14.12_svelte@3.49.0 svelte-hmr: 0.14.12_svelte@3.49.0
vite: 3.0.2_sass@1.54.0 vite: 3.0.3_sass@1.54.0
transitivePeerDependencies: transitivePeerDependencies:
- supports-color - supports-color
dev: true dev: true
@ -271,12 +281,22 @@ packages:
resolution: {integrity: sha512-hMYSqGqE24Bx6nKb41SwoODA8ewTQRM3mrIznwgDjLQCvYonOXBb/Ju11nkDt7K6mlj8QF58h32+R7ah0mITbQ==} resolution: {integrity: sha512-hMYSqGqE24Bx6nKb41SwoODA8ewTQRM3mrIznwgDjLQCvYonOXBb/Ju11nkDt7K6mlj8QF58h32+R7ah0mITbQ==}
dev: true dev: true
/@types/hast/2.3.4:
resolution: {integrity: sha512-wLEm0QvaoawEDoTRwzTXp4b4jpwiJDvR5KMnFnVodm3scufTlBOWRD6N1OBf9TZMhjlNsSfcO5V+7AF4+Vy+9g==}
dependencies:
'@types/unist': 2.0.6
dev: true
/@types/json-schema/7.0.11: /@types/json-schema/7.0.11:
resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==} resolution: {integrity: sha512-wOuvG1SN4Us4rez+tylwwwCV1psiNVOkJeM3AUWUNWg/jDQY2+HE/444y5gc+jBmRqASOm2Oeh5c1axHobwRKQ==}
dev: true dev: true
/@types/node/18.6.0: /@types/node/18.6.1:
resolution: {integrity: sha512-WZ/6I1GL0DNAo4bb01lGGKTHH8BHJyECepf11kWONg3OJoHq2WYOm16Es1V54Er7NTUXsbDCpKRKdmBc4X2xhA==} resolution: {integrity: sha512-z+2vB6yDt1fNwKOeGbckpmirO+VBDuQqecXkgeIqDlaOtmKn6hPR/viQ8cxCfqLU4fTlvM3+YjM367TukWdxpg==}
dev: true
/@types/parse5/6.0.3:
resolution: {integrity: sha512-SuT16Q1K51EAVPz1K29DJ/sXjhSQ0zjvsypYJ6tlwVsRV9jwW5Adq2ch8Dq8kDBCkYnELS7N7VNCSB5nC56t/g==}
dev: true dev: true
/@types/pug/2.0.6: /@types/pug/2.0.6:
@ -286,13 +306,17 @@ packages:
/@types/sass/1.43.1: /@types/sass/1.43.1:
resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==} resolution: {integrity: sha512-BPdoIt1lfJ6B7rw35ncdwBZrAssjcwzI5LByIrYs+tpXlj/CAkuVdRsgZDdP4lq5EjyWzwxZCqAoFyHKFwp32g==}
dependencies: dependencies:
'@types/node': 18.6.0 '@types/node': 18.6.1
dev: true dev: true
/@types/tryghost__content-api/1.3.11: /@types/tryghost__content-api/1.3.11:
resolution: {integrity: sha512-Gv8zoIVvIALZKjyZWa1dZT1WUtZgqLkpdH+tK/YlfL1JTEn+oeAEvj5AX/jjX2Scv7oaEc/SlZry4Km2xp+ZEw==} resolution: {integrity: sha512-Gv8zoIVvIALZKjyZWa1dZT1WUtZgqLkpdH+tK/YlfL1JTEn+oeAEvj5AX/jjX2Scv7oaEc/SlZry4Km2xp+ZEw==}
dev: true dev: true
/@types/unist/2.0.6:
resolution: {integrity: sha512-PBjIUxZHOuj0R15/xuwJYjFi+KZdNFrehocChv4g5hu6aFroHue8m0lBP0POdK2nKzbw0cgV1mws8+V/JAcEkQ==}
dev: true
/@typescript-eslint/eslint-plugin/5.30.7_f59730a40ab520cf82d095906622871f: /@typescript-eslint/eslint-plugin/5.30.7_f59730a40ab520cf82d095906622871f:
resolution: {integrity: sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==} resolution: {integrity: sha512-l4L6Do+tfeM2OK0GJsU7TUcM/1oN/N25xHm3Jb4z3OiDU4Lj8dIuxX9LpVMS9riSXQs42D1ieX7b85/r16H9Fw==}
engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0} engines: {node: ^12.22.0 || ^14.17.0 || >=16.0.0}
@ -528,6 +552,10 @@ packages:
- debug - debug
dev: false dev: false
/bail/2.0.2:
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
dev: true
/balanced-match/1.0.2: /balanced-match/1.0.2:
resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==} resolution: {integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==}
dev: true dev: true
@ -566,6 +594,10 @@ packages:
engines: {node: '>=6'} engines: {node: '>=6'}
dev: true dev: true
/ccount/2.0.1:
resolution: {integrity: sha512-eyrF0jiFpY+3drT6383f1qhkbGsLSifNAjA61IUjZjmLCWjItY6LB9ft9YhoDgwfmclB2zhu51Lc7+95b8NRAg==}
dev: true
/chalk/4.1.2: /chalk/4.1.2:
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==} resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
engines: {node: '>=10'} engines: {node: '>=10'}
@ -574,6 +606,14 @@ packages:
supports-color: 7.2.0 supports-color: 7.2.0
dev: true dev: true
/character-entities-html4/2.1.0:
resolution: {integrity: sha512-1v7fgQRj6hnSwFpq1Eu0ynr/CDEw0rXo2B61qXrLNdHZmPKgb7fqS1a2JwF0rISo9q77jDI8VMEHoApn8qDoZA==}
dev: true
/character-entities-legacy/3.0.0:
resolution: {integrity: sha512-RpPp0asT/6ufRm//AJVwpViZbGM/MkjQFxJccQRHmISF/22NBtsHqAWmL+/pmkPWoIUJdWyeVleTl1wydHATVQ==}
dev: true
/chokidar/3.5.3: /chokidar/3.5.3:
resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==} resolution: {integrity: sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==}
engines: {node: '>= 8.10.0'} engines: {node: '>= 8.10.0'}
@ -617,6 +657,10 @@ packages:
delayed-stream: 1.0.0 delayed-stream: 1.0.0
dev: false dev: false
/comma-separated-tokens/2.0.2:
resolution: {integrity: sha512-G5yTt3KQN4Yn7Yk4ed73hlZ1evrFKXeUW3086p3PRFNp7m2vIjI6Pg+Kgb+oyzhd9F2qdcoj67+y3SdxL5XWsg==}
dev: true
/concat-map/0.0.1: /concat-map/0.0.1:
resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=} resolution: {integrity: sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=}
dev: true dev: true
@ -634,6 +678,10 @@ packages:
which: 2.0.2 which: 2.0.2
dev: true dev: true
/css-selector-parser/1.4.1:
resolution: {integrity: sha512-HYPSb7y/Z7BNDCOrakL4raGO2zltZkbeXyAd6Tg9obzix6QhzxCotdBl6VT0Dv4vZfJGVz3WL/xaEI9Ly3ul0g==}
dev: true
/dayjs/1.11.4: /dayjs/1.11.4:
resolution: {integrity: sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==} resolution: {integrity: sha512-Zj/lPM5hOvQ1Bf7uAvewDaUcsJoI6JmNqmHhHl3nyumwe0XHwt8sWdOVAPACJzCebL8gQCi+K49w7iKWnGwX9g==}
dev: true dev: true
@ -704,192 +752,192 @@ packages:
resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==} resolution: {integrity: sha512-SOp9Phqvqn7jtEUxPWdWfWoLmyt2VaJ6MpvP9Comy1MceMXqE6bxvaTu4iaxpYYPzhny28Lc+M87/c2cPK6lDg==}
dev: true dev: true
/esbuild-android-64/0.14.49: /esbuild-android-64/0.14.50:
resolution: {integrity: sha512-vYsdOTD+yi+kquhBiFWl3tyxnj2qZJsl4tAqwhT90ktUdnyTizgle7TjNx6Ar1bN7wcwWqZ9QInfdk2WVagSww==} resolution: {integrity: sha512-H7iUEm7gUJHzidsBlFPGF6FTExazcgXL/46xxLo6i6bMtPim6ZmXyTccS8yOMpy6HAC6dPZ/JCQqrkkin69n6Q==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [android] os: [android]
dev: true dev: true
optional: true optional: true
/esbuild-android-arm64/0.14.49: /esbuild-android-arm64/0.14.50:
resolution: {integrity: sha512-g2HGr/hjOXCgSsvQZ1nK4nW/ei8JUx04Li74qub9qWrStlysaVmadRyTVuW32FGIpLQyc5sUjjZopj49eGGM2g==} resolution: {integrity: sha512-NFaoqEwa+OYfoYVpQWDMdKII7wZZkAjtJFo1WdnBeCYlYikvUhTnf2aPwPu5qEAw/ie1NYK0yn3cafwP+kP+OQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [android] os: [android]
dev: true dev: true
optional: true optional: true
/esbuild-darwin-64/0.14.49: /esbuild-darwin-64/0.14.50:
resolution: {integrity: sha512-3rvqnBCtX9ywso5fCHixt2GBCUsogNp9DjGmvbBohh31Ces34BVzFltMSxJpacNki96+WIcX5s/vum+ckXiLYg==} resolution: {integrity: sha512-gDQsCvGnZiJv9cfdO48QqxkRV8oKAXgR2CGp7TdIpccwFdJMHf8hyIJhMW/05b/HJjET/26Us27Jx91BFfEVSA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [darwin] os: [darwin]
dev: true dev: true
optional: true optional: true
/esbuild-darwin-arm64/0.14.49: /esbuild-darwin-arm64/0.14.50:
resolution: {integrity: sha512-XMaqDxO846srnGlUSJnwbijV29MTKUATmOLyQSfswbK/2X5Uv28M9tTLUJcKKxzoo9lnkYPsx2o8EJcTYwCs/A==} resolution: {integrity: sha512-36nNs5OjKIb/Q50Sgp8+rYW/PqirRiFN0NFc9hEvgPzNJxeJedktXwzfJSln4EcRFRh5Vz4IlqFRScp+aiBBzA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [darwin] os: [darwin]
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-64/0.14.49: /esbuild-freebsd-64/0.14.50:
resolution: {integrity: sha512-NJ5Q6AjV879mOHFri+5lZLTp5XsO2hQ+KSJYLbfY9DgCu8s6/Zl2prWXVANYTeCDLlrIlNNYw8y34xqyLDKOmQ==} resolution: {integrity: sha512-/1pHHCUem8e/R86/uR+4v5diI2CtBdiWKiqGuPa9b/0x3Nwdh5AOH7lj+8823C6uX1e0ufwkSLkS+aFZiBCWxA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [freebsd] os: [freebsd]
dev: true dev: true
optional: true optional: true
/esbuild-freebsd-arm64/0.14.49: /esbuild-freebsd-arm64/0.14.50:
resolution: {integrity: sha512-lFLtgXnAc3eXYqj5koPlBZvEbBSOSUbWO3gyY/0+4lBdRqELyz4bAuamHvmvHW5swJYL7kngzIZw6kdu25KGOA==} resolution: {integrity: sha512-iKwUVMQztnPZe5pUYHdMkRc9aSpvoV1mkuHlCoPtxZA3V+Kg/ptpzkcSY+fKd0kuom+l6Rc93k0UPVkP7xoqrw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [freebsd] os: [freebsd]
dev: true dev: true
optional: true optional: true
/esbuild-linux-32/0.14.49: /esbuild-linux-32/0.14.50:
resolution: {integrity: sha512-zTTH4gr2Kb8u4QcOpTDVn7Z8q7QEIvFl/+vHrI3cF6XOJS7iEI1FWslTo3uofB2+mn6sIJEQD9PrNZKoAAMDiA==} resolution: {integrity: sha512-sWUwvf3uz7dFOpLzYuih+WQ7dRycrBWHCdoXJ4I4XdMxEHCECd8b7a9N9u7FzT6XR2gHPk9EzvchQUtiEMRwqw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-linux-64/0.14.49: /esbuild-linux-64/0.14.50:
resolution: {integrity: sha512-hYmzRIDzFfLrB5c1SknkxzM8LdEUOusp6M2TnuQZJLRtxTgyPnZZVtyMeCLki0wKgYPXkFsAVhi8vzo2mBNeTg==} resolution: {integrity: sha512-u0PQxPhaeI629t4Y3EEcQ0wmWG+tC/LpP2K7yDFvwuPq0jSQ8SIN+ARNYfRjGW15O2we3XJvklbGV0wRuUCPig==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm/0.14.49: /esbuild-linux-arm/0.14.50:
resolution: {integrity: sha512-iE3e+ZVv1Qz1Sy0gifIsarJMQ89Rpm9mtLSRtG3AH0FPgAzQ5Z5oU6vYzhc/3gSPi2UxdCOfRhw2onXuFw/0lg==} resolution: {integrity: sha512-VALZq13bhmFJYFE/mLEb+9A0w5vo8z+YDVOWeaf9vOTrSC31RohRIwtxXBnVJ7YKLYfEMzcgFYf+OFln3Y0cWg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm] cpu: [arm]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-linux-arm64/0.14.49: /esbuild-linux-arm64/0.14.50:
resolution: {integrity: sha512-KLQ+WpeuY+7bxukxLz5VgkAAVQxUv67Ft4DmHIPIW+2w3ObBPQhqNoeQUHxopoW/aiOn3m99NSmSV+bs4BSsdA==} resolution: {integrity: sha512-ZyfoNgsTftD7Rp5S7La5auomKdNeB3Ck+kSKXC4pp96VnHyYGjHHXWIlcbH8i+efRn9brszo1/Thl1qn8RqmhQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-linux-mips64le/0.14.49: /esbuild-linux-mips64le/0.14.50:
resolution: {integrity: sha512-n+rGODfm8RSum5pFIqFQVQpYBw+AztL8s6o9kfx7tjfK0yIGF6tm5HlG6aRjodiiKkH2xAiIM+U4xtQVZYU4rA==} resolution: {integrity: sha512-ygo31Vxn/WrmjKCHkBoutOlFG5yM9J2UhzHb0oWD9O61dGg+Hzjz9hjf5cmM7FBhAzdpOdEWHIrVOg2YAi6rTw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [mips64el] cpu: [mips64el]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-linux-ppc64le/0.14.49: /esbuild-linux-ppc64le/0.14.50:
resolution: {integrity: sha512-WP9zR4HX6iCBmMFH+XHHng2LmdoIeUmBpL4aL2TR8ruzXyT4dWrJ5BSbT8iNo6THN8lod6GOmYDLq/dgZLalGw==} resolution: {integrity: sha512-xWCKU5UaiTUT6Wz/O7GKP9KWdfbsb7vhfgQzRfX4ahh5NZV4ozZ4+SdzYG8WxetsLy84UzLX3Pi++xpVn1OkFQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ppc64] cpu: [ppc64]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-linux-riscv64/0.14.49: /esbuild-linux-riscv64/0.14.50:
resolution: {integrity: sha512-h66ORBz+Dg+1KgLvzTVQEA1LX4XBd1SK0Fgbhhw4akpG/YkN8pS6OzYI/7SGENiN6ao5hETRDSkVcvU9NRtkMQ==} resolution: {integrity: sha512-0+dsneSEihZTopoO9B6Z6K4j3uI7EdxBP7YSF5rTwUgCID+wHD3vM1gGT0m+pjCW+NOacU9kH/WE9N686FHAJg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [riscv64] cpu: [riscv64]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-linux-s390x/0.14.49: /esbuild-linux-s390x/0.14.50:
resolution: {integrity: sha512-DhrUoFVWD+XmKO1y7e4kNCqQHPs6twz6VV6Uezl/XHYGzM60rBewBF5jlZjG0nCk5W/Xy6y1xWeopkrhFFM0sQ==} resolution: {integrity: sha512-tVjqcu8o0P9H4StwbIhL1sQYm5mWATlodKB6dpEZFkcyTI8kfIGWiWcrGmkNGH2i1kBUOsdlBafPxR3nzp3TDA==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [s390x] cpu: [s390x]
os: [linux] os: [linux]
dev: true dev: true
optional: true optional: true
/esbuild-netbsd-64/0.14.49: /esbuild-netbsd-64/0.14.50:
resolution: {integrity: sha512-BXaUwFOfCy2T+hABtiPUIpWjAeWK9P8O41gR4Pg73hpzoygVGnj0nI3YK4SJhe52ELgtdgWP/ckIkbn2XaTxjQ==} resolution: {integrity: sha512-0R/glfqAQ2q6MHDf7YJw/TulibugjizBxyPvZIcorH0Mb7vSimdHy0XF5uCba5CKt+r4wjax1mvO9lZ4jiAhEg==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [netbsd] os: [netbsd]
dev: true dev: true
optional: true optional: true
/esbuild-openbsd-64/0.14.49: /esbuild-openbsd-64/0.14.50:
resolution: {integrity: sha512-lP06UQeLDGmVPw9Rg437Btu6J9/BmyhdoefnQ4gDEJTtJvKtQaUcOQrhjTq455ouZN4EHFH1h28WOJVANK41kA==} resolution: {integrity: sha512-7PAtmrR5mDOFubXIkuxYQ4bdNS6XCK8AIIHUiZxq1kL8cFIH5731jPcXQ4JNy/wbj1C9sZ8rzD8BIM80Tqk29w==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [openbsd] os: [openbsd]
dev: true dev: true
optional: true optional: true
/esbuild-sunos-64/0.14.49: /esbuild-sunos-64/0.14.50:
resolution: {integrity: sha512-4c8Zowp+V3zIWje329BeLbGh6XI9c/rqARNaj5yPHdC61pHI9UNdDxT3rePPJeWcEZVKjkiAS6AP6kiITp7FSw==} resolution: {integrity: sha512-gBxNY/wyptvD7PkHIYcq7se6SQEXcSC8Y7mE0FJB+CGgssEWf6vBPfTTZ2b6BWKnmaP6P6qb7s/KRIV5T2PxsQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [sunos] os: [sunos]
dev: true dev: true
optional: true optional: true
/esbuild-windows-32/0.14.49: /esbuild-windows-32/0.14.50:
resolution: {integrity: sha512-q7Rb+J9yHTeKr9QTPDYkqfkEj8/kcKz9lOabDuvEXpXuIcosWCJgo5Z7h/L4r7rbtTH4a8U2FGKb6s1eeOHmJA==} resolution: {integrity: sha512-MOOe6J9cqe/iW1qbIVYSAqzJFh0p2LBLhVUIWdMVnNUNjvg2/4QNX4oT4IzgDeldU+Bym9/Tn6+DxvUHJXL5Zw==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [ia32] cpu: [ia32]
os: [win32] os: [win32]
dev: true dev: true
optional: true optional: true
/esbuild-windows-64/0.14.49: /esbuild-windows-64/0.14.50:
resolution: {integrity: sha512-+Cme7Ongv0UIUTniPqfTX6mJ8Deo7VXw9xN0yJEN1lQMHDppTNmKwAM3oGbD/Vqff+07K2gN0WfNkMohmG+dVw==} resolution: {integrity: sha512-r/qE5Ex3w1jjGv/JlpPoWB365ldkppUlnizhMxJgojp907ZF1PgLTuW207kgzZcSCXyquL9qJkMsY+MRtaZ5yQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [x64] cpu: [x64]
os: [win32] os: [win32]
dev: true dev: true
optional: true optional: true
/esbuild-windows-arm64/0.14.49: /esbuild-windows-arm64/0.14.50:
resolution: {integrity: sha512-v+HYNAXzuANrCbbLFJ5nmO3m5y2PGZWLe3uloAkLt87aXiO2mZr3BTmacZdjwNkNEHuH3bNtN8cak+mzVjVPfA==} resolution: {integrity: sha512-EMS4lQnsIe12ZyAinOINx7eq2mjpDdhGZZWDwPZE/yUTN9cnc2Ze/xUTYIAyaJqrqQda3LnDpADKpvLvol6ENQ==}
engines: {node: '>=12'} engines: {node: '>=12'}
cpu: [arm64] cpu: [arm64]
os: [win32] os: [win32]
dev: true dev: true
optional: true optional: true
/esbuild/0.14.49: /esbuild/0.14.50:
resolution: {integrity: sha512-/TlVHhOaq7Yz8N1OJrjqM3Auzo5wjvHFLk+T8pIue+fhnhIMpfAzsG6PLVMbFveVxqD2WOp3QHei+52IMUNmCw==} resolution: {integrity: sha512-SbC3k35Ih2IC6trhbMYW7hYeGdjPKf9atTKwBUHqMCYFZZ9z8zhuvfnZihsnJypl74FjiAKjBRqFkBkAd0rS/w==}
engines: {node: '>=12'} engines: {node: '>=12'}
hasBin: true hasBin: true
requiresBuild: true requiresBuild: true
optionalDependencies: optionalDependencies:
esbuild-android-64: 0.14.49 esbuild-android-64: 0.14.50
esbuild-android-arm64: 0.14.49 esbuild-android-arm64: 0.14.50
esbuild-darwin-64: 0.14.49 esbuild-darwin-64: 0.14.50
esbuild-darwin-arm64: 0.14.49 esbuild-darwin-arm64: 0.14.50
esbuild-freebsd-64: 0.14.49 esbuild-freebsd-64: 0.14.50
esbuild-freebsd-arm64: 0.14.49 esbuild-freebsd-arm64: 0.14.50
esbuild-linux-32: 0.14.49 esbuild-linux-32: 0.14.50
esbuild-linux-64: 0.14.49 esbuild-linux-64: 0.14.50
esbuild-linux-arm: 0.14.49 esbuild-linux-arm: 0.14.50
esbuild-linux-arm64: 0.14.49 esbuild-linux-arm64: 0.14.50
esbuild-linux-mips64le: 0.14.49 esbuild-linux-mips64le: 0.14.50
esbuild-linux-ppc64le: 0.14.49 esbuild-linux-ppc64le: 0.14.50
esbuild-linux-riscv64: 0.14.49 esbuild-linux-riscv64: 0.14.50
esbuild-linux-s390x: 0.14.49 esbuild-linux-s390x: 0.14.50
esbuild-netbsd-64: 0.14.49 esbuild-netbsd-64: 0.14.50
esbuild-openbsd-64: 0.14.49 esbuild-openbsd-64: 0.14.50
esbuild-sunos-64: 0.14.49 esbuild-sunos-64: 0.14.50
esbuild-windows-32: 0.14.49 esbuild-windows-32: 0.14.50
esbuild-windows-64: 0.14.49 esbuild-windows-64: 0.14.50
esbuild-windows-arm64: 0.14.49 esbuild-windows-arm64: 0.14.50
dev: true dev: true
/escape-string-regexp/4.0.0: /escape-string-regexp/4.0.0:
@ -1042,6 +1090,10 @@ packages:
engines: {node: '>=0.10.0'} engines: {node: '>=0.10.0'}
dev: true dev: true
/extend/3.0.2:
resolution: {integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==}
dev: true
/fast-deep-equal/3.1.3: /fast-deep-equal/3.1.3:
resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==} resolution: {integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==}
dev: true dev: true
@ -1237,6 +1289,74 @@ packages:
function-bind: 1.1.1 function-bind: 1.1.1
dev: true dev: true
/hast-util-from-parse5/7.1.0:
resolution: {integrity: sha512-m8yhANIAccpU4K6+121KpPP55sSl9/samzQSQGpb0mTExcNh2WlvjtMwSWFhg6uqD4Rr6Nfa8N6TMypQM51rzQ==}
dependencies:
'@types/hast': 2.3.4
'@types/parse5': 6.0.3
'@types/unist': 2.0.6
hastscript: 7.0.2
property-information: 6.1.1
vfile: 5.3.4
vfile-location: 4.0.1
web-namespaces: 2.0.1
dev: true
/hast-util-from-selector/2.0.0:
resolution: {integrity: sha512-ynzm+z7xEecWF8DvnJ5onpGIsfmXphKRsZUnWCfinKwP+fL1/2mYW1nWOVife61syQpF74j4h/57BT6e5niDwA==}
dependencies:
'@types/hast': 2.3.4
css-selector-parser: 1.4.1
hastscript: 7.0.2
zwitch: 2.0.2
dev: true
/hast-util-is-element/2.1.2:
resolution: {integrity: sha512-thjnlGAnwP8ef/GSO1Q8BfVk2gundnc2peGQqEg2kUt/IqesiGg/5mSwN2fE7nLzy61pg88NG6xV+UrGOrx9EA==}
dependencies:
'@types/hast': 2.3.4
'@types/unist': 2.0.6
dev: true
/hast-util-parse-selector/3.1.0:
resolution: {integrity: sha512-AyjlI2pTAZEOeu7GeBPZhROx0RHBnydkQIXlhnFzDi0qfXTmGUWoCYZtomHbrdrheV4VFUlPcfJ6LMF5T6sQzg==}
dependencies:
'@types/hast': 2.3.4
dev: true
/hast-util-to-html/8.0.3:
resolution: {integrity: sha512-/D/E5ymdPYhHpPkuTHOUkSatxr4w1ZKrZsG0Zv/3C2SRVT0JFJG53VS45AMrBtYk0wp5A7ksEhiC8QaOZM95+A==}
dependencies:
'@types/hast': 2.3.4
ccount: 2.0.1
comma-separated-tokens: 2.0.2
hast-util-is-element: 2.1.2
hast-util-whitespace: 2.0.0
html-void-elements: 2.0.1
property-information: 6.1.1
space-separated-tokens: 2.0.1
stringify-entities: 4.0.3
unist-util-is: 5.1.1
dev: true
/hast-util-whitespace/2.0.0:
resolution: {integrity: sha512-Pkw+xBHuV6xFeJprJe2BBEoDV+AvQySaz3pPDRUs5PNZEMQjpXJJueqrpcHIXxnWTcAGi/UOCgVShlkY6kLoqg==}
dev: true
/hastscript/7.0.2:
resolution: {integrity: sha512-uA8ooUY4ipaBvKcMuPehTAB/YfFLSSzCwFSwT6ltJbocFUKH/GDHLN+tflq7lSRf9H86uOuxOFkh1KgIy3Gg2g==}
dependencies:
'@types/hast': 2.3.4
comma-separated-tokens: 2.0.2
hast-util-parse-selector: 3.1.0
property-information: 6.1.1
space-separated-tokens: 2.0.1
dev: true
/html-void-elements/2.0.1:
resolution: {integrity: sha512-0quDb7s97CfemeJAnW9wC0hw78MtW7NU3hqtCD75g2vFlDLt36llsYD7uB7SUzojLMP24N5IatXf7ylGXiGG9A==}
dev: true
/https-proxy-agent/5.0.1: /https-proxy-agent/5.0.1:
resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==} resolution: {integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==}
engines: {node: '>= 6'} engines: {node: '>= 6'}
@ -1287,6 +1407,11 @@ packages:
binary-extensions: 2.2.0 binary-extensions: 2.2.0
dev: true dev: true
/is-buffer/2.0.5:
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
engines: {node: '>=4'}
dev: true
/is-core-module/2.9.0: /is-core-module/2.9.0:
resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==} resolution: {integrity: sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==}
dependencies: dependencies:
@ -1315,6 +1440,11 @@ packages:
engines: {node: '>=0.12.0'} engines: {node: '>=0.12.0'}
dev: true dev: true
/is-plain-obj/4.1.0:
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
engines: {node: '>=12'}
dev: true
/isexe/2.0.0: /isexe/2.0.0:
resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==} resolution: {integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==}
dev: true dev: true
@ -1552,6 +1682,10 @@ packages:
callsites: 3.1.0 callsites: 3.1.0
dev: true dev: true
/parse5/6.0.1:
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
dev: true
/pascal-case/3.1.2: /pascal-case/3.1.2:
resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==} resolution: {integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==}
dependencies: dependencies:
@ -1617,6 +1751,10 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/property-information/6.1.1:
resolution: {integrity: sha512-hrzC564QIl0r0vy4l6MvRLhafmUowhO/O3KgVSoXIbbA2Sz4j8HGpJc6T2cubRVwMwpdiG/vKGfhT4IixmKN9w==}
dev: true
/punycode/2.1.1: /punycode/2.1.1:
resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==} resolution: {integrity: sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==}
engines: {node: '>=6'} engines: {node: '>=6'}
@ -1652,6 +1790,23 @@ packages:
engines: {node: '>=8'} engines: {node: '>=8'}
dev: true dev: true
/rehype-parse/8.0.4:
resolution: {integrity: sha512-MJJKONunHjoTh4kc3dsM1v3C9kGrrxvA3U8PxZlP2SjH8RNUSrb+lF7Y0KVaUDnGH2QZ5vAn7ulkiajM9ifuqg==}
dependencies:
'@types/hast': 2.3.4
hast-util-from-parse5: 7.1.0
parse5: 6.0.1
unified: 10.1.2
dev: true
/rehype-stringify/9.0.3:
resolution: {integrity: sha512-kWiZ1bgyWlgOxpqD5HnxShKAdXtb2IUljn3hQAhySeak6IOQPPt6DeGnsIh4ixm7yKJWzm8TXFuC/lPfcWHJqw==}
dependencies:
'@types/hast': 2.3.4
hast-util-to-html: 8.0.3
unified: 10.1.2
dev: true
/resolve-from/4.0.0: /resolve-from/4.0.0:
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==} resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
engines: {node: '>=4'} engines: {node: '>=4'}
@ -1801,6 +1956,10 @@ packages:
resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==} resolution: {integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==}
dev: true dev: true
/space-separated-tokens/2.0.1:
resolution: {integrity: sha512-ekwEbFp5aqSPKaqeY1PGrlGQxPNaq+Cnx4+bE2D8sciBQrHpbwoBbawqTN2+6jPs9IdWxxiUcN0K2pkczD3zmw==}
dev: true
/string-width/4.2.3: /string-width/4.2.3:
resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==} resolution: {integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -1816,6 +1975,13 @@ packages:
safe-buffer: 5.2.1 safe-buffer: 5.2.1
dev: true dev: true
/stringify-entities/4.0.3:
resolution: {integrity: sha512-BP9nNHMhhfcMbiuQKCqMjhDP5yBCAxsPu4pHFFzJ6Alo9dZgY4VLDPutXqIjpRiMoKdp7Av85Gr73Q5uH9k7+g==}
dependencies:
character-entities-html4: 2.1.0
character-entities-legacy: 3.0.0
dev: true
/strip-ansi/6.0.1: /strip-ansi/6.0.1:
resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==} resolution: {integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==}
engines: {node: '>=8'} engines: {node: '>=8'}
@ -2003,6 +2169,10 @@ packages:
resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==} resolution: {integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==}
dev: true dev: true
/trough/2.1.0:
resolution: {integrity: sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==}
dev: true
/tslib/1.14.1: /tslib/1.14.1:
resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==} resolution: {integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==}
dev: true dev: true
@ -2039,6 +2209,43 @@ packages:
hasBin: true hasBin: true
dev: true dev: true
/unified/10.1.2:
resolution: {integrity: sha512-pUSWAi/RAnVy1Pif2kAoeWNBa3JVrx0MId2LASj8G+7AiHWoKZNTomq6LG326T68U7/e263X6fTdcXIy7XnF7Q==}
dependencies:
'@types/unist': 2.0.6
bail: 2.0.2
extend: 3.0.2
is-buffer: 2.0.5
is-plain-obj: 4.1.0
trough: 2.1.0
vfile: 5.3.4
dev: true
/unist-util-is/5.1.1:
resolution: {integrity: sha512-F5CZ68eYzuSvJjGhCLPL3cYx45IxkqXSetCcRgUXtbcm50X2L9oOWQlfUfDdAf+6Pd27YDblBfdtmsThXmwpbQ==}
dev: true
/unist-util-stringify-position/3.0.2:
resolution: {integrity: sha512-7A6eiDCs9UtjcwZOcCpM4aPII3bAAGv13E96IkawkOAW0OhH+yRxtY0lzo8KiHpzEMfH7Q+FizUmwp8Iqy5EWg==}
dependencies:
'@types/unist': 2.0.6
dev: true
/unist-util-visit-parents/5.1.0:
resolution: {integrity: sha512-y+QVLcY5eR/YVpqDsLf/xh9R3Q2Y4HxkZTp7ViLDU6WtJCEcPmRzW1gpdWDCDIqIlhuPDXOgttqPlykrHYDekg==}
dependencies:
'@types/unist': 2.0.6
unist-util-is: 5.1.1
dev: true
/unist-util-visit/4.1.0:
resolution: {integrity: sha512-n7lyhFKJfVZ9MnKtqbsqkQEk5P1KShj0+//V7mAcoI6bpbUjh3C/OG8HVD+pBihfh6Ovl01m8dkcv9HNqYajmQ==}
dependencies:
'@types/unist': 2.0.6
unist-util-is: 5.1.1
unist-util-visit-parents: 5.1.0
dev: true
/uri-js/4.4.1: /uri-js/4.4.1:
resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==} resolution: {integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==}
dependencies: dependencies:
@ -2053,8 +2260,31 @@ packages:
resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==} resolution: {integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==}
dev: true dev: true
/vite/3.0.2_sass@1.54.0: /vfile-location/4.0.1:
resolution: {integrity: sha512-TAqydxW/w0U5AoL5AsD9DApTvGb2iNbGs3sN4u2VdT1GFkQVUfgUldt+t08TZgi23uIauh1TUOQJALduo9GXqw==} resolution: {integrity: sha512-JDxPlTbZrZCQXogGheBHjbRWjESSPEak770XwWPfw5mTc1v1nWGLB/apzZxsx8a0SJVfF8HK8ql8RD308vXRUw==}
dependencies:
'@types/unist': 2.0.6
vfile: 5.3.4
dev: true
/vfile-message/3.1.2:
resolution: {integrity: sha512-QjSNP6Yxzyycd4SVOtmKKyTsSvClqBPJcd00Z0zuPj3hOIjg0rUPG6DbFGPvUKRgYyaIWLPKpuEclcuvb3H8qA==}
dependencies:
'@types/unist': 2.0.6
unist-util-stringify-position: 3.0.2
dev: true
/vfile/5.3.4:
resolution: {integrity: sha512-KI+7cnst03KbEyN1+JE504zF5bJBZa+J+CrevLeyIMq0aPU681I2rQ5p4PlnQ6exFtWiUrg26QUdFMnAKR6PIw==}
dependencies:
'@types/unist': 2.0.6
is-buffer: 2.0.5
unist-util-stringify-position: 3.0.2
vfile-message: 3.1.2
dev: true
/vite/3.0.3_sass@1.54.0:
resolution: {integrity: sha512-sDIpIcl3mv1NUaSzZwiXGEy1ZoWwwC2vkxUHY6yiDacR6zf//ZFuBJrozO62gedpE43pmxnLATNR5IYUdAEkMQ==}
engines: {node: ^14.18.0 || >=16.0.0} engines: {node: ^14.18.0 || >=16.0.0}
hasBin: true hasBin: true
peerDependencies: peerDependencies:
@ -2072,7 +2302,7 @@ packages:
terser: terser:
optional: true optional: true
dependencies: dependencies:
esbuild: 0.14.49 esbuild: 0.14.50
postcss: 8.4.14 postcss: 8.4.14
resolve: 1.22.1 resolve: 1.22.1
rollup: 2.77.0 rollup: 2.77.0
@ -2081,6 +2311,10 @@ packages:
fsevents: 2.3.2 fsevents: 2.3.2
dev: true dev: true
/web-namespaces/2.0.1:
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
dev: true
/webidl-conversions/3.0.1: /webidl-conversions/3.0.1:
resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==} resolution: {integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==}
dev: true dev: true
@ -2126,3 +2360,7 @@ packages:
/yallist/4.0.0: /yallist/4.0.0:
resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==} resolution: {integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==}
dev: true dev: true
/zwitch/2.0.2:
resolution: {integrity: sha512-JZxotl7SxAJH0j7dN4pxsTV6ZLXoLdGME+PsjkL/DaBrVryK9kTGq06GfKrwcSOqypP+fdXGoCHE36b99fWVoA==}
dev: true

View File

@ -0,0 +1,23 @@
<script lang="ts">
import { generateSizesString, generateSrcsetString } from '$lib/content/srcset';
import Hero from '@damillora/plachta/components/Hero/Hero.svelte';
export let background: string | null = null;
export let alt = '';
let srcset: string | null = null;
let sizes: string | null = null;
$: if (background != null) {
srcset = generateSrcsetString(background);
sizes = '100vw';
} else {
srcset = null;
sizes = null;
}
</script>
{#if background}
<Hero {background} {alt} {srcset} {sizes} />
{:else}
<Hero background="/images/default-feature.jpg" {alt} />
{/if}

View File

@ -0,0 +1,70 @@
import { unified } from "unified";
import type { Plugin } from "unified";
import parse from "rehype-parse";
import stringify from "rehype-stringify";
import { visit } from 'unist-util-visit'
import { fromSelector } from 'hast-util-from-selector';
import { generateSizesString, generateSrcsetString } from "./srcset";
const sizes = [300, 600, 1000, 1500, 2000];
const embedSrcs = [
/'*player.vimeo.com.*/,
/.*youtube.com.*/,
/.*youtube-nocookie.com.*/,
/.*kickstarter.com.*video.html.*/,
];
const processEmbed = (parent: any, node: any) => {
const wrapper = fromSelector('div');
wrapper.children = [node];
const width = node.properties.width;
const height = node.properties.height;
const aspect = height / width;
wrapper.properties = {
class: ['fluid-width-video-wrapper'],
style: `padding-top: ${aspect * 100}%`
};
node.properties.height = null;
node.properties.width = null;
parent.children = parent.children.filter((x: any) => x != node);
parent.children.unshift(wrapper);
}
export const postProcessor: Plugin = () => {
return (tree) => {
visit(tree, 'element', (node: any, i: number, parent: any) => {
// Responsive
if (node.tagName == 'img') {
const src = node.properties.src;
const srcsetString = generateSrcsetString(src);
const sizesString = generateSizesString();
node.properties.srcset = srcsetString;
node.properties.sizes = `${sizesString}`;
}
// Embeds
if (node.tagName == 'iframe') {
embedSrcs.forEach(x => {
if (node.properties.src.match(x)) {
processEmbed(parent, node);
}
});
}
if (node.tagName == 'object' || node.tagName == 'embed') {
processEmbed(parent, node);
}
})
}
}
export const processPostHtml = async (postHtml: string) => {
const processor = unified()
.use(parse)
.use(postProcessor)
.use(stringify);
const result = await processor.process(postHtml);
return result.toString();
}

15
src/lib/content/srcset.ts Normal file
View File

@ -0,0 +1,15 @@
const sizes = [300, 600, 1000, 1500, 2000];
export const generateSrcsetString = (src: string) => {
const srcsetString = sizes.map(x => {
const source = src.replace(`/content/images/`, `/content/images/size/w${x}/`)
return `${source} ${x}w`;
}).join(', ');
return srcsetString;
}
export const generateSizesString = () => {
const sizesString = `(min-width: 768px) 640px, (min-width: 1024px) 768px, 100vw`;
return sizesString;
}

View File

@ -8,6 +8,8 @@
error: new Error('Post not found') error: new Error('Post not found')
}; };
} }
const newHtml = await processPostHtml(post.html ?? '');
post.html = newHtml;
const prevPost = await browsePrevPost(post); const prevPost = await browsePrevPost(post);
const nextPost = await browseNextPost(post); const nextPost = await browseNextPost(post);
const relatedPost = await browseRelatedPost(post.primary_tag?.slug, post.id); const relatedPost = await browseRelatedPost(post.primary_tag?.slug, post.id);
@ -24,7 +26,6 @@
<script lang="ts"> <script lang="ts">
import dayjs from 'dayjs'; import dayjs from 'dayjs';
import fitvids from 'fitvids';
import Hero from '@damillora/plachta/components/Hero/Hero.svelte'; import Hero from '@damillora/plachta/components/Hero/Hero.svelte';
import PostHeader from '@damillora/plachta/components/Post/PostHeader.svelte'; import PostHeader from '@damillora/plachta/components/Post/PostHeader.svelte';
@ -35,6 +36,7 @@
import PostRelated from '@damillora/plachta/components/Post/PostRelated.svelte'; import PostRelated from '@damillora/plachta/components/Post/PostRelated.svelte';
import PostCard from '@damillora/plachta/components/PostCard/PostCard.svelte'; import PostCard from '@damillora/plachta/components/PostCard/PostCard.svelte';
import GhostStyle from '@damillora/plachta/components/Base/GhostStyle.svelte'; import GhostStyle from '@damillora/plachta/components/Base/GhostStyle.svelte';
import { processPostHtml } from '$lib/content/postProcessor';
import type { Load } from '@sveltejs/kit'; import type { Load } from '@sveltejs/kit';
import { import {
@ -47,23 +49,12 @@
import PostSeo from '$lib/components/SEO/PostSEO.svelte'; import PostSeo from '$lib/components/SEO/PostSEO.svelte';
import { onMount } from 'svelte'; import { onMount } from 'svelte';
import { afterNavigate } from '$app/navigation'; import { afterNavigate } from '$app/navigation';
import ResponsiveHero from '$lib/components/ResponsiveHero.svelte';
export let post: any; export let post: any;
export let prevPost: any; export let prevPost: any;
export let nextPost: any; export let nextPost: any;
export let relatedPost: any[]; export let relatedPost: any[];
onMount(() => {
if (browser) {
fitvids();
}
});
afterNavigate(() => {
if (browser) {
fitvids();
}
});
</script> </script>
<svelte:head> <svelte:head>
@ -71,7 +62,8 @@
</svelte:head> </svelte:head>
<PostSeo {post} /> <PostSeo {post} />
<Hero background={post.feature_image ?? `/images/default-feature.jpg`} />
<ResponsiveHero background={post.feature_image} />
<Container> <Container>
<Post> <Post>

View File

@ -62,3 +62,21 @@
</Base> </Base>
<NavigationLoading {loading} /> <NavigationLoading {loading} />
<style lang="scss">
// Responsive embeds
:global(.fluid-width-video-wrapper) {
width: 100%;
position: relative;
padding: 0;
:global(iframe),
:global(object),
:global(embed) {
position: absolute;
top: 0;
left: 0;
width: 100%;
height: 100%;
}
}
</style>