This commit is contained in:
parent
edde7d66cc
commit
4c6b0983dd
11 changed files with 371 additions and 441 deletions
|
@ -1,9 +1,38 @@
|
||||||
import { defineMDSveXConfig as defineConfig } from 'mdsvex';
|
import math from 'remark-math';
|
||||||
import remarkMath from 'remark-math';
|
import rehype_katex from 'rehype-katex';
|
||||||
import rehypeKatex from 'rehype-katex-svelte';
|
import katex from 'katex';
|
||||||
import rehypeMermaid from 'rehype-mermaid'; // Import rehype-mermaid
|
import visit from 'unist-util-visit';
|
||||||
|
|
||||||
const config = defineConfig({
|
const correct_hast_tree = () => (tree) => {
|
||||||
|
visit(tree, 'text', (node) => {
|
||||||
|
if (node.value.trim().startsWith('<')) {
|
||||||
|
node.type = 'raw';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
const katex_blocks = () => (tree) => {
|
||||||
|
visit(tree, 'code', (node) => {
|
||||||
|
if (node.lang === 'math') {
|
||||||
|
const str = katex.renderToString(node.value, {
|
||||||
|
displayMode: true,
|
||||||
|
leqno: false,
|
||||||
|
fleqn: false,
|
||||||
|
throwOnError: true,
|
||||||
|
errorColor: '#cc0000',
|
||||||
|
strict: 'warn',
|
||||||
|
output: 'htmlAndMathml',
|
||||||
|
trust: false,
|
||||||
|
macros: { '\\f': '#1f(#2)' }
|
||||||
|
});
|
||||||
|
|
||||||
|
node.type = 'raw';
|
||||||
|
node.value = '{@html `' + str + '`}';
|
||||||
|
}
|
||||||
|
});
|
||||||
|
};
|
||||||
|
|
||||||
|
export const mdsvex_config = {
|
||||||
extensions: ['.md', '.svx'],
|
extensions: ['.md', '.svx'],
|
||||||
layout: "./src/routes/articles/Layout.svelte",
|
layout: "./src/routes/articles/Layout.svelte",
|
||||||
|
|
||||||
|
@ -11,8 +40,6 @@ const config = defineConfig({
|
||||||
dashes: 'oldschool'
|
dashes: 'oldschool'
|
||||||
},
|
},
|
||||||
|
|
||||||
remarkPlugins: [remarkMath],
|
remarkPlugins: [math, katex_blocks],
|
||||||
rehypePlugins: [rehypeKatex, rehypeMermaid]
|
rehypePlugins: [correct_hast_tree, rehype_katex]
|
||||||
});
|
};
|
||||||
|
|
||||||
export default config;
|
|
||||||
|
|
|
@ -53,9 +53,12 @@
|
||||||
]
|
]
|
||||||
},
|
},
|
||||||
"dependencies": {
|
"dependencies": {
|
||||||
|
"katex": "^0.16.22",
|
||||||
"mermaid": "^11.6.0",
|
"mermaid": "^11.6.0",
|
||||||
"playwright": "^1.52.0",
|
"playwright": "^1.52.0",
|
||||||
|
"rehype-katex": "^5.0.0",
|
||||||
"rehype-katex-svelte": "^1.2.0",
|
"rehype-katex-svelte": "^1.2.0",
|
||||||
"remark-math": "^6.0.0"
|
"remark-math": "2",
|
||||||
|
"unist-util-visit": "^2.0.3"
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
523
pnpm-lock.yaml
generated
523
pnpm-lock.yaml
generated
|
@ -8,18 +8,27 @@ importers:
|
||||||
|
|
||||||
.:
|
.:
|
||||||
dependencies:
|
dependencies:
|
||||||
|
katex:
|
||||||
|
specifier: ^0.16.22
|
||||||
|
version: 0.16.22
|
||||||
mermaid:
|
mermaid:
|
||||||
specifier: ^11.6.0
|
specifier: ^11.6.0
|
||||||
version: 11.6.0
|
version: 11.6.0
|
||||||
playwright:
|
playwright:
|
||||||
specifier: ^1.52.0
|
specifier: ^1.52.0
|
||||||
version: 1.52.0
|
version: 1.52.0
|
||||||
|
rehype-katex:
|
||||||
|
specifier: ^5.0.0
|
||||||
|
version: 5.0.0
|
||||||
rehype-katex-svelte:
|
rehype-katex-svelte:
|
||||||
specifier: ^1.2.0
|
specifier: ^1.2.0
|
||||||
version: 1.2.0
|
version: 1.2.0
|
||||||
remark-math:
|
remark-math:
|
||||||
specifier: ^6.0.0
|
specifier: '2'
|
||||||
version: 6.0.0
|
version: 2.0.1
|
||||||
|
unist-util-visit:
|
||||||
|
specifier: ^2.0.3
|
||||||
|
version: 2.0.3
|
||||||
devDependencies:
|
devDependencies:
|
||||||
'@eslint/compat':
|
'@eslint/compat':
|
||||||
specifier: ^1.2.8
|
specifier: ^1.2.8
|
||||||
|
@ -873,15 +882,15 @@ packages:
|
||||||
'@types/json-schema@7.0.15':
|
'@types/json-schema@7.0.15':
|
||||||
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
|
resolution: {integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==}
|
||||||
|
|
||||||
'@types/katex@0.16.7':
|
'@types/katex@0.11.1':
|
||||||
resolution: {integrity: sha512-HMwFiRujE5PjrgwHQ25+bsLJgowjGjm5Z8FVSf0N6PwgJrwxH0QxzHYDcKsTfV3wva0vzrpqMTJS2jXPr5BMEQ==}
|
resolution: {integrity: sha512-DUlIj2nk0YnJdlWgsFuVKcX27MLW0KbKmGVoUHmFr+74FYYNUDAaj9ZqTADvsbE8rfxuVmSFc7KczYn5Y09ozg==}
|
||||||
|
|
||||||
'@types/mdast@4.0.4':
|
|
||||||
resolution: {integrity: sha512-kGaNbPh1k7AFzgpud/gMdvIm5xuECykRR+JnWKQno9TAXVa6WIVCGTPvYGekIDL4uwCZQSYbUxNBSb1aUo79oA==}
|
|
||||||
|
|
||||||
'@types/ms@2.1.0':
|
'@types/ms@2.1.0':
|
||||||
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
resolution: {integrity: sha512-GsCCIZDE/p3i96vtEqx+7dBUGXrc7zeSK3wwPHIaRThS+9OhWIXRqzs4d6k1SVU8g91DrNRWxWUGhp5KXQb2VA==}
|
||||||
|
|
||||||
|
'@types/parse5@5.0.3':
|
||||||
|
resolution: {integrity: sha512-kUNnecmtkunAoQ3CnjmMkzNU/gtxG8guhi+Fk2U/kOpIKjIMKnXGp4IJCgQJrXSgMsWYimYG4TGjz/UzbGEBTw==}
|
||||||
|
|
||||||
'@types/resolve@1.20.2':
|
'@types/resolve@1.20.2':
|
||||||
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
|
resolution: {integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==}
|
||||||
|
|
||||||
|
@ -1017,6 +1026,9 @@ packages:
|
||||||
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
|
resolution: {integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
|
||||||
|
bail@1.0.5:
|
||||||
|
resolution: {integrity: sha512-xFbRxM1tahm08yHBP16MMjVUAvDaBMD38zsM9EMAUN61omwLmKlOpB/Zku5QkjZ8TZ4vn53pj+t518cH0S03RQ==}
|
||||||
|
|
||||||
bail@2.0.2:
|
bail@2.0.2:
|
||||||
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
|
resolution: {integrity: sha512-0xO6mYd7JB2YesxDKplafRpsiOzPt9V02ddPCLbY1xYGPOX24NTyN50qnUxgCPcSoYMhKpAuBTjQoRZCAkUDRw==}
|
||||||
|
|
||||||
|
@ -1059,9 +1071,6 @@ packages:
|
||||||
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
resolution: {integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==}
|
||||||
engines: {node: '>=10'}
|
engines: {node: '>=10'}
|
||||||
|
|
||||||
character-entities@2.0.2:
|
|
||||||
resolution: {integrity: sha512-shx7oQ0Awen/BRIdkjkvz54PnEEI/EjwXDSIZp86/KKdbafHh1Df/RYGBhn4hbe2+uKC9FnT5UCEdyPz3ai9hQ==}
|
|
||||||
|
|
||||||
check-error@2.1.1:
|
check-error@2.1.1:
|
||||||
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
|
resolution: {integrity: sha512-OAlb+T7V4Op9OwdkjmguYRqncdlx5JiofwOAUkmTF+jNdHwzTaTs4sRAGpzLF3oOz5xAyDGrPgeIDFQmDOTiJw==}
|
||||||
engines: {node: '>= 16'}
|
engines: {node: '>= 16'}
|
||||||
|
@ -1089,6 +1098,9 @@ packages:
|
||||||
color-name@1.1.4:
|
color-name@1.1.4:
|
||||||
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==}
|
||||||
|
|
||||||
|
comma-separated-tokens@1.0.8:
|
||||||
|
resolution: {integrity: sha512-GHuDRO12Sypu2cV70d1dkA2EUmXHgntrzbpvOB+Qy+49ypNfGgFQIC2fhhXbnyrJRynDCAARsT7Ou0M6hirpfw==}
|
||||||
|
|
||||||
comma-separated-tokens@2.0.3:
|
comma-separated-tokens@2.0.3:
|
||||||
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
|
resolution: {integrity: sha512-Fu4hJdvzeylCfQPp9SGWidpzrMs7tTrlu6Vb8XGaRGck8QSNZJJp538Wrb60Lax4fPwR64ViY468OIUTbRlGZg==}
|
||||||
|
|
||||||
|
@ -1316,9 +1328,6 @@ packages:
|
||||||
decimal.js@10.5.0:
|
decimal.js@10.5.0:
|
||||||
resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
|
resolution: {integrity: sha512-8vDa8Qxvr/+d94hSh5P3IJwI5t8/c0KsMp+g8bNw9cY2icONa5aPfvKeieW1WlG0WQYwwhJ7mjui2xtiePQSXw==}
|
||||||
|
|
||||||
decode-named-character-reference@1.1.0:
|
|
||||||
resolution: {integrity: sha512-Wy+JTSbFThEOXQIR2L6mxJvEs+veIzpmqD7ynWxMXGpnk3smkHQOp6forLdHsKpAMW9iJpaBBIxz285t1n1C3w==}
|
|
||||||
|
|
||||||
deep-eql@5.0.2:
|
deep-eql@5.0.2:
|
||||||
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
|
resolution: {integrity: sha512-h5k/5U50IJJFpzfL6nO9jaaumfjO/f2NjK/oYB2Djzm4p9L+3T9qWpZqZ2hAbLPuuYq9wrU08WQyBTL5GbPk5Q==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
@ -1579,6 +1588,9 @@ packages:
|
||||||
hast-util-from-html@2.0.3:
|
hast-util-from-html@2.0.3:
|
||||||
resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
|
resolution: {integrity: sha512-CUSRHXyKjzHov8yKsQjGOElXy/3EKpyX56ELnkHH34vDVw1N1XSQ1ZcAvTyAPtGqLTuKP/uxM+aLkSPqF/EtMw==}
|
||||||
|
|
||||||
|
hast-util-from-parse5@6.0.1:
|
||||||
|
resolution: {integrity: sha512-jeJUWiN5pSxW12Rh01smtVkZgZr33wBokLzKLwinYOUfSzm1Nl/c3GUGebDyOKjdsRgMvoVbV0VpAcpjF4NrJA==}
|
||||||
|
|
||||||
hast-util-from-parse5@8.0.3:
|
hast-util-from-parse5@8.0.3:
|
||||||
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
|
resolution: {integrity: sha512-3kxEVkEKt0zvcZ3hCRYI8rqrgwtlIOFMWkbclACvjlDw8Li9S2hk/d51OI0nr/gIpdMHNepwgOKqZ/sy0Clpyg==}
|
||||||
|
|
||||||
|
@ -1588,9 +1600,15 @@ packages:
|
||||||
hast-util-has-property@2.0.1:
|
hast-util-has-property@2.0.1:
|
||||||
resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==}
|
resolution: {integrity: sha512-X2+RwZIMTMKpXUzlotatPzWj8bspCymtXH3cfG3iQKV+wPF53Vgaqxi/eLqGck0wKq1kS9nvoB1wchbCPEL8sg==}
|
||||||
|
|
||||||
|
hast-util-is-element@1.1.0:
|
||||||
|
resolution: {integrity: sha512-oUmNua0bFbdrD/ELDSSEadRVtWZOf3iF6Lbv81naqsIV99RnSCieTbWuWCY8BAeEfKJTKl0gRdokv+dELutHGQ==}
|
||||||
|
|
||||||
hast-util-is-element@3.0.0:
|
hast-util-is-element@3.0.0:
|
||||||
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
|
resolution: {integrity: sha512-Val9mnv2IWpLbNPqc/pUem+a7Ipj2aHacCwgNfTiK0vJKl0LF+4Ba4+v1oPHFpf3bLYmreq0/l3Gud9S5OH42g==}
|
||||||
|
|
||||||
|
hast-util-parse-selector@2.2.5:
|
||||||
|
resolution: {integrity: sha512-7j6mrk/qqkSehsM92wQjdIgWM2/BW61u/53G6xmC8i1OmEdKLHbk419QKQUjz6LglWsfqoiHmyMRkP1BGjecNQ==}
|
||||||
|
|
||||||
hast-util-parse-selector@4.0.0:
|
hast-util-parse-selector@4.0.0:
|
||||||
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
|
resolution: {integrity: sha512-wkQCkSYoOGCRKERFWcxMVMOcYE2K1AaNLU8DXS9arxnLOUEWbOXKXiJUNzEpqZ3JOKpnha3jkFrumEjVliDe7A==}
|
||||||
|
|
||||||
|
@ -1600,12 +1618,18 @@ packages:
|
||||||
hast-util-to-string@2.0.0:
|
hast-util-to-string@2.0.0:
|
||||||
resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==}
|
resolution: {integrity: sha512-02AQ3vLhuH3FisaMM+i/9sm4OXGSq1UhOOCpTLLQtHdL3tZt7qil69r8M8iDkZYyC0HCFylcYoP+8IO7ddta1A==}
|
||||||
|
|
||||||
|
hast-util-to-text@2.0.1:
|
||||||
|
resolution: {integrity: sha512-8nsgCARfs6VkwH2jJU9b8LNTuR4700na+0h3PqCaEk4MAnMDeu5P0tP8mjk9LLNGxIeQRLbiDbZVw6rku+pYsQ==}
|
||||||
|
|
||||||
hast-util-to-text@4.0.2:
|
hast-util-to-text@4.0.2:
|
||||||
resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
|
resolution: {integrity: sha512-KK6y/BN8lbaq654j7JgBydev7wuNMcID54lkRav1P0CaE1e47P72AWWPiGKXTJU271ooYzcvTAn/Zt0REnvc7A==}
|
||||||
|
|
||||||
hast-util-whitespace@2.0.1:
|
hast-util-whitespace@2.0.1:
|
||||||
resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
|
resolution: {integrity: sha512-nAxA0v8+vXSBDt3AnRUNjyRIQ0rD+ntpbAp4LnPkumc5M9yUbSMa4XDU9Q6etY4f1Wp4bNgvc1yjiZtsTTrSng==}
|
||||||
|
|
||||||
|
hastscript@6.0.0:
|
||||||
|
resolution: {integrity: sha512-nDM6bvd7lIqDUiYEiu5Sl/+6ReP0BMk/2f4U/Rooccxkj0P5nm+acM5PrGJ/t5I8qPGiqZSE6hVAwZEdZIvP4w==}
|
||||||
|
|
||||||
hastscript@9.0.1:
|
hastscript@9.0.1:
|
||||||
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
|
resolution: {integrity: sha512-g7df9rMFX/SPi34tyGCyUBREQoKkapwdY/T04Qn9TDWfHhAYt4/I0gMVirzK5wEzeUqIjEB+LXC/ypb7Aqno5w==}
|
||||||
|
|
||||||
|
@ -1651,6 +1675,10 @@ packages:
|
||||||
resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
|
resolution: {integrity: sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
|
||||||
|
is-buffer@2.0.5:
|
||||||
|
resolution: {integrity: sha512-i2R6zNFDwgEHJyQUtJEk0XFi1i0dPFn/oqjK3/vPCcDeJvW5NQ83V8QbicfF1SupOaB0h8ntgBC2YiE7dfyctQ==}
|
||||||
|
engines: {node: '>=4'}
|
||||||
|
|
||||||
is-core-module@2.16.1:
|
is-core-module@2.16.1:
|
||||||
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
|
resolution: {integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==}
|
||||||
engines: {node: '>= 0.4'}
|
engines: {node: '>= 0.4'}
|
||||||
|
@ -1670,6 +1698,10 @@ packages:
|
||||||
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
resolution: {integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==}
|
||||||
engines: {node: '>=0.12.0'}
|
engines: {node: '>=0.12.0'}
|
||||||
|
|
||||||
|
is-plain-obj@2.1.0:
|
||||||
|
resolution: {integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==}
|
||||||
|
engines: {node: '>=8'}
|
||||||
|
|
||||||
is-plain-obj@4.1.0:
|
is-plain-obj@4.1.0:
|
||||||
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
|
resolution: {integrity: sha512-+Pgi+vMuUNkJyExiMBt5IlFoMyKnr5zhJ4Uspz58WOhBF5QoIZkFyNHIbBAtHwzVAgk5RtndVNsDRN61/mmDqg==}
|
||||||
engines: {node: '>=12'}
|
engines: {node: '>=12'}
|
||||||
|
@ -1715,6 +1747,10 @@ packages:
|
||||||
json-stable-stringify-without-jsonify@1.0.1:
|
json-stable-stringify-without-jsonify@1.0.1:
|
||||||
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
resolution: {integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==}
|
||||||
|
|
||||||
|
katex@0.13.24:
|
||||||
|
resolution: {integrity: sha512-jZxYuKCma3VS5UuxOx/rFV1QyGSl3Uy/i0kTJF3HgQ5xMinCQVF8Zd4bMY/9aI9b9A2pjIBOsjSSm68ykTAr8w==}
|
||||||
|
hasBin: true
|
||||||
|
|
||||||
katex@0.16.22:
|
katex@0.16.22:
|
||||||
resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==}
|
resolution: {integrity: sha512-XCHRdUw4lf3SKBaJe4EvgqIuWwkPSo9XoeO8GjQW94Bp7TWv9hNhzZjZ+OH9yf1UmLygb7DIT5GSFQiyt16zYg==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
@ -1843,9 +1879,6 @@ packages:
|
||||||
lodash@4.17.21:
|
lodash@4.17.21:
|
||||||
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
resolution: {integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==}
|
||||||
|
|
||||||
longest-streak@3.1.0:
|
|
||||||
resolution: {integrity: sha512-9Ri+o0JYgehTaVBBDoMqIl8GXtbWg711O3srftcHhZ0dqnETqLaoIK0x17fUw9rFSlK/0NlsKe0Ahhyl5pXE2g==}
|
|
||||||
|
|
||||||
loupe@3.1.3:
|
loupe@3.1.3:
|
||||||
resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
|
resolution: {integrity: sha512-kkIp7XSkP78ZxJEsSxW3712C6teJVoeHHwgo9zJ380de7IYyJ2ISlxojcH2pC5OFLewESmnRi/+XCDIEEVyoug==}
|
||||||
|
|
||||||
|
@ -1864,21 +1897,6 @@ packages:
|
||||||
engines: {node: '>= 18'}
|
engines: {node: '>= 18'}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
mdast-util-from-markdown@2.0.2:
|
|
||||||
resolution: {integrity: sha512-uZhTV/8NBuw0WHkPTrCqDOl0zVe1BIng5ZtHoDk49ME1qqcjYmmLmOf0gELgcRMxN4w2iuIeVso5/6QymSrgmA==}
|
|
||||||
|
|
||||||
mdast-util-math@3.0.0:
|
|
||||||
resolution: {integrity: sha512-Tl9GBNeG/AhJnQM221bJR2HPvLOSnLE/T9cJI9tlc6zwQk2nPk/4f0cHkOdEixQPC/j8UtKDdITswvLAy1OZ1w==}
|
|
||||||
|
|
||||||
mdast-util-phrasing@4.1.0:
|
|
||||||
resolution: {integrity: sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==}
|
|
||||||
|
|
||||||
mdast-util-to-markdown@2.1.2:
|
|
||||||
resolution: {integrity: sha512-xj68wMTvGXVOKonmog6LwyJKrYXZPvlwabaryTjLh9LuvovB/KAH+kvi8Gjj+7rJjsFi23nkUxRQv1KqSroMqA==}
|
|
||||||
|
|
||||||
mdast-util-to-string@4.0.0:
|
|
||||||
resolution: {integrity: sha512-0H44vDimn51F0YwvxSJSm0eCDOJTRlmN0R1yBh4HLj9wiV1Dn0QoXGbvFAWj2hSItVTlCmBF1hqKlIyUBVFLPg==}
|
|
||||||
|
|
||||||
mdsvex@0.11.2:
|
mdsvex@0.11.2:
|
||||||
resolution: {integrity: sha512-Y4ab+vLvTJS88196Scb/RFNaHMHVSWw6CwfsgWIQP8f42D57iDII0/qABSu530V4pkv8s6T2nx3ds0MC1VwFLA==}
|
resolution: {integrity: sha512-Y4ab+vLvTJS88196Scb/RFNaHMHVSWw6CwfsgWIQP8f42D57iDII0/qABSu530V4pkv8s6T2nx3ds0MC1VwFLA==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -1899,72 +1917,6 @@ packages:
|
||||||
mermaid@11.6.0:
|
mermaid@11.6.0:
|
||||||
resolution: {integrity: sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==}
|
resolution: {integrity: sha512-PE8hGUy1LDlWIHWBP05SFdqUHGmRcCcK4IzpOKPE35eOw+G9zZgcnMpyunJVUEOgb//KBORPjysKndw8bFLuRg==}
|
||||||
|
|
||||||
micromark-core-commonmark@2.0.3:
|
|
||||||
resolution: {integrity: sha512-RDBrHEMSxVFLg6xvnXmb1Ayr2WzLAWjeSATAoxwKYJV94TeNavgoIdA0a9ytzDSVzBy2YKFK+emCPOEibLeCrg==}
|
|
||||||
|
|
||||||
micromark-extension-math@3.1.0:
|
|
||||||
resolution: {integrity: sha512-lvEqd+fHjATVs+2v/8kg9i5Q0AP2k85H0WUOwpIVvUML8BapsMvh1XAogmQjOCsLpoKRCVQqEkQBB3NhVBcsOg==}
|
|
||||||
|
|
||||||
micromark-factory-destination@2.0.1:
|
|
||||||
resolution: {integrity: sha512-Xe6rDdJlkmbFRExpTOmRj9N3MaWmbAgdpSrBQvCFqhezUn4AHqJHbaEnfbVYYiexVSs//tqOdY/DxhjdCiJnIA==}
|
|
||||||
|
|
||||||
micromark-factory-label@2.0.1:
|
|
||||||
resolution: {integrity: sha512-VFMekyQExqIW7xIChcXn4ok29YE3rnuyveW3wZQWWqF4Nv9Wk5rgJ99KzPvHjkmPXF93FXIbBp6YdW3t71/7Vg==}
|
|
||||||
|
|
||||||
micromark-factory-space@2.0.1:
|
|
||||||
resolution: {integrity: sha512-zRkxjtBxxLd2Sc0d+fbnEunsTj46SWXgXciZmHq0kDYGnck/ZSGj9/wULTV95uoeYiK5hRXP2mJ98Uo4cq/LQg==}
|
|
||||||
|
|
||||||
micromark-factory-title@2.0.1:
|
|
||||||
resolution: {integrity: sha512-5bZ+3CjhAd9eChYTHsjy6TGxpOFSKgKKJPJxr293jTbfry2KDoWkhBb6TcPVB4NmzaPhMs1Frm9AZH7OD4Cjzw==}
|
|
||||||
|
|
||||||
micromark-factory-whitespace@2.0.1:
|
|
||||||
resolution: {integrity: sha512-Ob0nuZ3PKt/n0hORHyvoD9uZhr+Za8sFoP+OnMcnWK5lngSzALgQYKMr9RJVOWLqQYuyn6ulqGWSXdwf6F80lQ==}
|
|
||||||
|
|
||||||
micromark-util-character@2.1.1:
|
|
||||||
resolution: {integrity: sha512-wv8tdUTJ3thSFFFJKtpYKOYiGP2+v96Hvk4Tu8KpCAsTMs6yi+nVmGh1syvSCsaxz45J6Jbw+9DD6g97+NV67Q==}
|
|
||||||
|
|
||||||
micromark-util-chunked@2.0.1:
|
|
||||||
resolution: {integrity: sha512-QUNFEOPELfmvv+4xiNg2sRYeS/P84pTW0TCgP5zc9FpXetHY0ab7SxKyAQCNCc1eK0459uoLI1y5oO5Vc1dbhA==}
|
|
||||||
|
|
||||||
micromark-util-classify-character@2.0.1:
|
|
||||||
resolution: {integrity: sha512-K0kHzM6afW/MbeWYWLjoHQv1sgg2Q9EccHEDzSkxiP/EaagNzCm7T/WMKZ3rjMbvIpvBiZgwR3dKMygtA4mG1Q==}
|
|
||||||
|
|
||||||
micromark-util-combine-extensions@2.0.1:
|
|
||||||
resolution: {integrity: sha512-OnAnH8Ujmy59JcyZw8JSbK9cGpdVY44NKgSM7E9Eh7DiLS2E9RNQf0dONaGDzEG9yjEl5hcqeIsj4hfRkLH/Bg==}
|
|
||||||
|
|
||||||
micromark-util-decode-numeric-character-reference@2.0.2:
|
|
||||||
resolution: {integrity: sha512-ccUbYk6CwVdkmCQMyr64dXz42EfHGkPQlBj5p7YVGzq8I7CtjXZJrubAYezf7Rp+bjPseiROqe7G6foFd+lEuw==}
|
|
||||||
|
|
||||||
micromark-util-decode-string@2.0.1:
|
|
||||||
resolution: {integrity: sha512-nDV/77Fj6eH1ynwscYTOsbK7rR//Uj0bZXBwJZRfaLEJ1iGBR6kIfNmlNqaqJf649EP0F3NWNdeJi03elllNUQ==}
|
|
||||||
|
|
||||||
micromark-util-encode@2.0.1:
|
|
||||||
resolution: {integrity: sha512-c3cVx2y4KqUnwopcO9b/SCdo2O67LwJJ/UyqGfbigahfegL9myoEFoDYZgkT7f36T0bLrM9hZTAaAyH+PCAXjw==}
|
|
||||||
|
|
||||||
micromark-util-html-tag-name@2.0.1:
|
|
||||||
resolution: {integrity: sha512-2cNEiYDhCWKI+Gs9T0Tiysk136SnR13hhO8yW6BGNyhOC4qYFnwF1nKfD3HFAIXA5c45RrIG1ub11GiXeYd1xA==}
|
|
||||||
|
|
||||||
micromark-util-normalize-identifier@2.0.1:
|
|
||||||
resolution: {integrity: sha512-sxPqmo70LyARJs0w2UclACPUUEqltCkJ6PhKdMIDuJ3gSf/Q+/GIe3WKl0Ijb/GyH9lOpUkRAO2wp0GVkLvS9Q==}
|
|
||||||
|
|
||||||
micromark-util-resolve-all@2.0.1:
|
|
||||||
resolution: {integrity: sha512-VdQyxFWFT2/FGJgwQnJYbe1jjQoNTS4RjglmSjTUlpUMa95Htx9NHeYW4rGDJzbjvCsl9eLjMQwGeElsqmzcHg==}
|
|
||||||
|
|
||||||
micromark-util-sanitize-uri@2.0.1:
|
|
||||||
resolution: {integrity: sha512-9N9IomZ/YuGGZZmQec1MbgxtlgougxTodVwDzzEouPKo3qFWvymFHWcnDi2vzV1ff6kas9ucW+o3yzJK9YB1AQ==}
|
|
||||||
|
|
||||||
micromark-util-subtokenize@2.1.0:
|
|
||||||
resolution: {integrity: sha512-XQLu552iSctvnEcgXw6+Sx75GflAPNED1qx7eBJ+wydBb2KCbRZe+NwvIEEMM83uml1+2WSXpBAcp9IUCgCYWA==}
|
|
||||||
|
|
||||||
micromark-util-symbol@2.0.1:
|
|
||||||
resolution: {integrity: sha512-vs5t8Apaud9N28kgCrRUdEed4UJ+wWNvicHLPxCa9ENlYuAY31M0ETy5y1vA33YoNPDFTghEbnh6efaE8h4x0Q==}
|
|
||||||
|
|
||||||
micromark-util-types@2.0.2:
|
|
||||||
resolution: {integrity: sha512-Yw0ECSpJoViF1qTU4DC6NwtC4aWGt1EkzaQB8KPPyCRR8z9TWeV0HbEFGTO+ZY1wB22zmxnJqhPyTpOVCpeHTA==}
|
|
||||||
|
|
||||||
micromark@4.0.2:
|
|
||||||
resolution: {integrity: sha512-zpe98Q6kvavpCr1NPVSCMebCKfD7CA2NqZ+rykeNhONIJBpc1tFKt9hucLGwha3jNTNI8lHpctWJWoimVF4PfA==}
|
|
||||||
|
|
||||||
micromatch@4.0.8:
|
micromatch@4.0.8:
|
||||||
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
|
resolution: {integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==}
|
||||||
engines: {node: '>=8.6'}
|
engines: {node: '>=8.6'}
|
||||||
|
@ -2034,6 +1986,9 @@ packages:
|
||||||
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
|
resolution: {integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
|
parse5@6.0.1:
|
||||||
|
resolution: {integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==}
|
||||||
|
|
||||||
parse5@7.3.0:
|
parse5@7.3.0:
|
||||||
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
|
resolution: {integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==}
|
||||||
|
|
||||||
|
@ -2212,6 +2167,9 @@ packages:
|
||||||
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
|
resolution: {integrity: sha512-DEvV2ZF2r2/63V+tK8hQvrR2ZGn10srHbXviTlcv7Kpzw8jWiNTqbVgjO3IY8RxrrOUF8VPMQQFysYYYv0YZxw==}
|
||||||
engines: {node: '>=6'}
|
engines: {node: '>=6'}
|
||||||
|
|
||||||
|
property-information@5.6.0:
|
||||||
|
resolution: {integrity: sha512-YUHSPk+A30YPv+0Qf8i9Mbfe/C0hdPXk1s1jPVToV8pk8BQtpw10ct89Eo7OWkutrwqvT0eicAxlOg3dOAu8JA==}
|
||||||
|
|
||||||
property-information@6.5.0:
|
property-information@6.5.0:
|
||||||
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
|
resolution: {integrity: sha512-PgTgs/BlvHxOu8QuEN7wi5A0OmXaBcHpmCSTehcs6Uuu9IkDIEo13Hy7n898RHfrQ49vKCoGeWZSaAK01nwVig==}
|
||||||
|
|
||||||
|
@ -2245,6 +2203,9 @@ packages:
|
||||||
rehype-katex-svelte@1.2.0:
|
rehype-katex-svelte@1.2.0:
|
||||||
resolution: {integrity: sha512-3mAa0J7LgMfaoU3oj9XLBIn5H/MyvWcOQcItoWhww/sABkcLpY73WsAs5mwH0c6cwYDYwJKaVVl2vNuL3wokeA==}
|
resolution: {integrity: sha512-3mAa0J7LgMfaoU3oj9XLBIn5H/MyvWcOQcItoWhww/sABkcLpY73WsAs5mwH0c6cwYDYwJKaVVl2vNuL3wokeA==}
|
||||||
|
|
||||||
|
rehype-katex@5.0.0:
|
||||||
|
resolution: {integrity: sha512-ksSuEKCql/IiIadOHiKRMjypva9BLhuwQNascMqaoGLDVd0k2NlE2wMvgZ3rpItzRKCd6vs8s7MFbb8pcR0AEg==}
|
||||||
|
|
||||||
rehype-mermaid@3.0.0:
|
rehype-mermaid@3.0.0:
|
||||||
resolution: {integrity: sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==}
|
resolution: {integrity: sha512-fxrD5E4Fa1WXUjmjNDvLOMT4XB1WaxcfycFIWiYU0yEMQhcTDElc9aDFnbDFRLxG1Cfo1I3mfD5kg4sjlWaB+Q==}
|
||||||
peerDependencies:
|
peerDependencies:
|
||||||
|
@ -2253,8 +2214,15 @@ packages:
|
||||||
playwright:
|
playwright:
|
||||||
optional: true
|
optional: true
|
||||||
|
|
||||||
remark-math@6.0.0:
|
rehype-parse@7.0.1:
|
||||||
resolution: {integrity: sha512-MMqgnP74Igy+S3WwnhQ7kqGlEerTETXMvJhrUzDikVZ2/uogJCb+WHUg97hK9/jcfc0dkD73s3LN8zU49cTEtA==}
|
resolution: {integrity: sha512-fOiR9a9xH+Le19i4fGzIEowAbwG7idy2Jzs4mOrFWBSJ0sNUgy0ev871dwWnbOo371SjgjG4pwzrbgSVrKxecw==}
|
||||||
|
|
||||||
|
remark-math@2.0.1:
|
||||||
|
resolution: {integrity: sha512-FokDg5BmlPbKaAdD4IfSVuRgYH6FBPeIn0zxZA6oZ6epc4qOSjoSJPyhsH0H/WKABuaCVMJuF5O2STti6UmBQw==}
|
||||||
|
|
||||||
|
repeat-string@1.6.1:
|
||||||
|
resolution: {integrity: sha512-PV0dzCYDNfRi1jCDbJzpW7jNNDRuCOG/jI5ctQcGKt/clZD+YcPS3yIlWuTJMmESC8aevCFmWJy5wjAFgNqN6w==}
|
||||||
|
engines: {node: '>=0.10'}
|
||||||
|
|
||||||
resolve-from@4.0.0:
|
resolve-from@4.0.0:
|
||||||
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
resolution: {integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==}
|
||||||
|
@ -2327,6 +2295,9 @@ packages:
|
||||||
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
resolution: {integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==}
|
||||||
engines: {node: '>=0.10.0'}
|
engines: {node: '>=0.10.0'}
|
||||||
|
|
||||||
|
space-separated-tokens@1.1.5:
|
||||||
|
resolution: {integrity: sha512-q/JSVd1Lptzhf5bkYm4ob4iWPjx0KiRe3sRFBNrVqbJkFaBm5vbbowy1mymoPNLRa52+oadOhJ+K49wsSeSjTA==}
|
||||||
|
|
||||||
space-separated-tokens@2.0.2:
|
space-separated-tokens@2.0.2:
|
||||||
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
|
resolution: {integrity: sha512-PEGlAwrG8yXGXRjW32fGbg66JAlOAwbObuqVoJpv/mRgoWDQfgH1wDPvtzWyUSNAXBGSk8h755YDbbcEy3SH2Q==}
|
||||||
|
|
||||||
|
@ -2435,6 +2406,9 @@ packages:
|
||||||
resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==}
|
resolution: {integrity: sha512-hdF5ZgjTqgAntKkklYw0R03MG2x/bSzTtkxmIRw/sTNV8YXsCJ1tfLAX23lhxhHJlEf3CRCOCGGWw3vI3GaSPw==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
trough@1.0.5:
|
||||||
|
resolution: {integrity: sha512-rvuRbTarPXmMb79SmzEp8aqXNKcK+y0XaB298IXueQ8I2PsrATcPBCSPyK/dDNa2iWOhKlfNnOjdAOTBU/nkFA==}
|
||||||
|
|
||||||
trough@2.2.0:
|
trough@2.2.0:
|
||||||
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
|
resolution: {integrity: sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==}
|
||||||
|
|
||||||
|
@ -2473,9 +2447,18 @@ packages:
|
||||||
unified@11.0.5:
|
unified@11.0.5:
|
||||||
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
|
resolution: {integrity: sha512-xKvGhPWw3k84Qjh8bI3ZeJjqnyadK+GEFtazSfZv/rKeTkTjOJho6mFqh2SM96iIcZokxiOpg78GazTSg8+KHA==}
|
||||||
|
|
||||||
|
unified@9.2.2:
|
||||||
|
resolution: {integrity: sha512-Sg7j110mtefBD+qunSLO1lqOEKdrwBFBrR6Qd8f4uwkhWNlbkaqwHse6e7QvD3AP/MNoJdEDLaf8OxYyoWgorQ==}
|
||||||
|
|
||||||
|
unist-util-find-after@3.0.0:
|
||||||
|
resolution: {integrity: sha512-ojlBqfsBftYXExNu3+hHLfJQ/X1jYY/9vdm4yZWjIbf0VuWF6CRufci1ZyoD/wV2TYMKxXUoNuoqwy+CkgzAiQ==}
|
||||||
|
|
||||||
unist-util-find-after@5.0.0:
|
unist-util-find-after@5.0.0:
|
||||||
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
|
resolution: {integrity: sha512-amQa0Ep2m6hE2g72AugUItjbuM8X8cGQnFoHk0pGfrFeT9GZhzN5SW8nRsiGKK7Aif4CrACPENkA6P/Lw6fHGQ==}
|
||||||
|
|
||||||
|
unist-util-is@4.1.0:
|
||||||
|
resolution: {integrity: sha512-ZOQSsnce92GrxSqlnEEseX0gi7GH9zTJZ0p9dtu87WRb/37mMPO2Ilx1s/t9vBHrFhbgweUwb+t7cIn5dxPhZg==}
|
||||||
|
|
||||||
unist-util-is@5.2.1:
|
unist-util-is@5.2.1:
|
||||||
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
|
resolution: {integrity: sha512-u9njyyfEh43npf1M+yGKDGVPbY/JWEemg5nH05ncKPfi+kBbKBJoTdsogMu33uhytuLlv9y0O7GH7fEdwLdLQw==}
|
||||||
|
|
||||||
|
@ -2491,12 +2474,18 @@ packages:
|
||||||
unist-util-stringify-position@4.0.0:
|
unist-util-stringify-position@4.0.0:
|
||||||
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
|
resolution: {integrity: sha512-0ASV06AAoKCDkS2+xw5RXJywruurpbC4JZSm7nr7MOt1ojAzvyyaO+UxZf18j8FCF6kmzCZKcAgN/yu2gm2XgQ==}
|
||||||
|
|
||||||
|
unist-util-visit-parents@3.1.1:
|
||||||
|
resolution: {integrity: sha512-1KROIZWo6bcMrZEwiH2UrXDyalAa0uqzWCxCJj6lPOvTve2WkfgCytoDTPaMnodXh1WrXOq0haVYHj99ynJlsg==}
|
||||||
|
|
||||||
unist-util-visit-parents@5.1.3:
|
unist-util-visit-parents@5.1.3:
|
||||||
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
|
resolution: {integrity: sha512-x6+y8g7wWMyQhL1iZfhIPhDAs7Xwbn9nRosDXl7qoPTSCy0yNxnKc+hWokFifWQIDGi154rdUqKvbCa4+1kLhg==}
|
||||||
|
|
||||||
unist-util-visit-parents@6.0.1:
|
unist-util-visit-parents@6.0.1:
|
||||||
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
|
resolution: {integrity: sha512-L/PqWzfTP9lzzEa6CKs0k2nARxTdZduw3zyh8d2NVBnsyvHjSX4TWse388YrrQKbvI8w20fGjGlhgT96WwKykw==}
|
||||||
|
|
||||||
|
unist-util-visit@2.0.3:
|
||||||
|
resolution: {integrity: sha512-iJ4/RczbJMkD0712mGktuGpm/U4By4FfDonL7N/9tATGIF4imikjOuagyMY53tnZq3NP6BcmlrHhEKAfGWjh7Q==}
|
||||||
|
|
||||||
unist-util-visit@4.1.2:
|
unist-util-visit@4.1.2:
|
||||||
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
|
resolution: {integrity: sha512-MSd8OUGISqHdVvfY9TPhyK2VdUrPgxkUtWSuMHF6XAAFuL4LokseigBnZtPnJMu+FbynTkFNnFlyjxpVKujMRg==}
|
||||||
|
|
||||||
|
@ -2513,6 +2502,9 @@ packages:
|
||||||
resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
|
resolution: {integrity: sha512-0/A9rDy9P7cJ+8w1c9WD9V//9Wj15Ce2MPz8Ri6032usz+NfePxx5AcN3bN+r6ZL6jEo066/yNYB3tn4pQEx+A==}
|
||||||
hasBin: true
|
hasBin: true
|
||||||
|
|
||||||
|
vfile-location@3.2.0:
|
||||||
|
resolution: {integrity: sha512-aLEIZKv/oxuCDZ8lkJGhuhztf/BW4M+iHdCwglA/eWc+vtuRFJj8EtgceYFX4LRjOhCAAiNHsKGssC6onJ+jbA==}
|
||||||
|
|
||||||
vfile-location@5.0.3:
|
vfile-location@5.0.3:
|
||||||
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
|
resolution: {integrity: sha512-5yXvWDEgqeiYiBe1lbxYF7UMAIm/IcopxMHrMQDq3nvKcjPKIhZklUKL+AE7J7uApI4kwe2snsK+eI6UTj9EHg==}
|
||||||
|
|
||||||
|
@ -2522,6 +2514,9 @@ packages:
|
||||||
vfile-message@4.0.2:
|
vfile-message@4.0.2:
|
||||||
resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
|
resolution: {integrity: sha512-jRDZ1IMLttGj41KcZvlrYAaI3CfqpLpfpf+Mfig13viT6NKvRzWZ+lXz0Y5D60w6uJIBAOGq9mSHf0gktF0duw==}
|
||||||
|
|
||||||
|
vfile@4.2.1:
|
||||||
|
resolution: {integrity: sha512-O6AE4OskCG5S1emQ/4gl8zK586RqA3srz3nfK/Viy0UPToBc5Trp9BVFb1u0CjsKrAWwnpr4ifM/KBXPWwJbCA==}
|
||||||
|
|
||||||
vfile@6.0.3:
|
vfile@6.0.3:
|
||||||
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
|
resolution: {integrity: sha512-KzIbH/9tXat2u30jf+smMwFCsno4wHVdNmzFyL+T/L3UGqqk6JKfVqOFOZEpZSHADH1k40ab6NUIXZq422ov3Q==}
|
||||||
|
|
||||||
|
@ -2630,6 +2625,9 @@ packages:
|
||||||
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
|
resolution: {integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==}
|
||||||
engines: {node: '>=18'}
|
engines: {node: '>=18'}
|
||||||
|
|
||||||
|
web-namespaces@1.1.4:
|
||||||
|
resolution: {integrity: sha512-wYxSGajtmoP4WxfejAPIr4l0fVh+jeMXZb08wNc0tMg6xsfZXj3cECqIK0G7ZAqUq0PP8WlMDtaOGVBTAWztNw==}
|
||||||
|
|
||||||
web-namespaces@2.0.1:
|
web-namespaces@2.0.1:
|
||||||
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
|
resolution: {integrity: sha512-bKr1DkiNa2krS7qxNtdrtHAmzuYGFQLiQ13TsorsdT6ULTkPLKuu5+GsFpDlg6JFjUTwX2DyhMPG2be8uPrqsQ==}
|
||||||
|
|
||||||
|
@ -2682,6 +2680,10 @@ packages:
|
||||||
xmlchars@2.2.0:
|
xmlchars@2.2.0:
|
||||||
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
resolution: {integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==}
|
||||||
|
|
||||||
|
xtend@4.0.2:
|
||||||
|
resolution: {integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==}
|
||||||
|
engines: {node: '>=0.4'}
|
||||||
|
|
||||||
yaml@1.10.2:
|
yaml@1.10.2:
|
||||||
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
resolution: {integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==}
|
||||||
engines: {node: '>= 6'}
|
engines: {node: '>= 6'}
|
||||||
|
@ -3348,6 +3350,7 @@ snapshots:
|
||||||
'@types/debug@4.1.12':
|
'@types/debug@4.1.12':
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/ms': 2.1.0
|
'@types/ms': 2.1.0
|
||||||
|
optional: true
|
||||||
|
|
||||||
'@types/estree@1.0.7': {}
|
'@types/estree@1.0.7': {}
|
||||||
|
|
||||||
|
@ -3363,13 +3366,12 @@ snapshots:
|
||||||
|
|
||||||
'@types/json-schema@7.0.15': {}
|
'@types/json-schema@7.0.15': {}
|
||||||
|
|
||||||
'@types/katex@0.16.7': {}
|
'@types/katex@0.11.1': {}
|
||||||
|
|
||||||
'@types/mdast@4.0.4':
|
'@types/ms@2.1.0':
|
||||||
dependencies:
|
optional: true
|
||||||
'@types/unist': 3.0.3
|
|
||||||
|
|
||||||
'@types/ms@2.1.0': {}
|
'@types/parse5@5.0.3': {}
|
||||||
|
|
||||||
'@types/resolve@1.20.2': {}
|
'@types/resolve@1.20.2': {}
|
||||||
|
|
||||||
|
@ -3532,6 +3534,8 @@ snapshots:
|
||||||
|
|
||||||
axobject-query@4.1.0: {}
|
axobject-query@4.1.0: {}
|
||||||
|
|
||||||
|
bail@1.0.5: {}
|
||||||
|
|
||||||
bail@2.0.2: {}
|
bail@2.0.2: {}
|
||||||
|
|
||||||
balanced-match@1.0.2: {}
|
balanced-match@1.0.2: {}
|
||||||
|
@ -3575,8 +3579,6 @@ snapshots:
|
||||||
ansi-styles: 4.3.0
|
ansi-styles: 4.3.0
|
||||||
supports-color: 7.2.0
|
supports-color: 7.2.0
|
||||||
|
|
||||||
character-entities@2.0.2: {}
|
|
||||||
|
|
||||||
check-error@2.1.1: {}
|
check-error@2.1.1: {}
|
||||||
|
|
||||||
chevrotain-allstar@0.3.1(chevrotain@11.0.3):
|
chevrotain-allstar@0.3.1(chevrotain@11.0.3):
|
||||||
|
@ -3605,6 +3607,8 @@ snapshots:
|
||||||
|
|
||||||
color-name@1.1.4: {}
|
color-name@1.1.4: {}
|
||||||
|
|
||||||
|
comma-separated-tokens@1.0.8: {}
|
||||||
|
|
||||||
comma-separated-tokens@2.0.3: {}
|
comma-separated-tokens@2.0.3: {}
|
||||||
|
|
||||||
commander@7.2.0: {}
|
commander@7.2.0: {}
|
||||||
|
@ -3843,10 +3847,6 @@ snapshots:
|
||||||
|
|
||||||
decimal.js@10.5.0: {}
|
decimal.js@10.5.0: {}
|
||||||
|
|
||||||
decode-named-character-reference@1.1.0:
|
|
||||||
dependencies:
|
|
||||||
character-entities: 2.0.2
|
|
||||||
|
|
||||||
deep-eql@5.0.2: {}
|
deep-eql@5.0.2: {}
|
||||||
|
|
||||||
deep-is@0.1.4: {}
|
deep-is@0.1.4: {}
|
||||||
|
@ -4133,6 +4133,15 @@ snapshots:
|
||||||
vfile: 6.0.3
|
vfile: 6.0.3
|
||||||
vfile-message: 4.0.2
|
vfile-message: 4.0.2
|
||||||
|
|
||||||
|
hast-util-from-parse5@6.0.1:
|
||||||
|
dependencies:
|
||||||
|
'@types/parse5': 5.0.3
|
||||||
|
hastscript: 6.0.0
|
||||||
|
property-information: 5.6.0
|
||||||
|
vfile: 4.2.1
|
||||||
|
vfile-location: 3.2.0
|
||||||
|
web-namespaces: 1.1.4
|
||||||
|
|
||||||
hast-util-from-parse5@8.0.3:
|
hast-util-from-parse5@8.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
|
@ -4150,10 +4159,14 @@ snapshots:
|
||||||
|
|
||||||
hast-util-has-property@2.0.1: {}
|
hast-util-has-property@2.0.1: {}
|
||||||
|
|
||||||
|
hast-util-is-element@1.1.0: {}
|
||||||
|
|
||||||
hast-util-is-element@3.0.0:
|
hast-util-is-element@3.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
|
|
||||||
|
hast-util-parse-selector@2.2.5: {}
|
||||||
|
|
||||||
hast-util-parse-selector@4.0.0:
|
hast-util-parse-selector@4.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
|
@ -4180,6 +4193,12 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 2.3.10
|
'@types/hast': 2.3.10
|
||||||
|
|
||||||
|
hast-util-to-text@2.0.1:
|
||||||
|
dependencies:
|
||||||
|
hast-util-is-element: 1.1.0
|
||||||
|
repeat-string: 1.6.1
|
||||||
|
unist-util-find-after: 3.0.0
|
||||||
|
|
||||||
hast-util-to-text@4.0.2:
|
hast-util-to-text@4.0.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
|
@ -4189,6 +4208,14 @@ snapshots:
|
||||||
|
|
||||||
hast-util-whitespace@2.0.1: {}
|
hast-util-whitespace@2.0.1: {}
|
||||||
|
|
||||||
|
hastscript@6.0.0:
|
||||||
|
dependencies:
|
||||||
|
'@types/hast': 2.3.10
|
||||||
|
comma-separated-tokens: 1.0.8
|
||||||
|
hast-util-parse-selector: 2.2.5
|
||||||
|
property-information: 5.6.0
|
||||||
|
space-separated-tokens: 1.1.5
|
||||||
|
|
||||||
hastscript@9.0.1:
|
hastscript@9.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
|
@ -4236,6 +4263,8 @@ snapshots:
|
||||||
|
|
||||||
internmap@2.0.3: {}
|
internmap@2.0.3: {}
|
||||||
|
|
||||||
|
is-buffer@2.0.5: {}
|
||||||
|
|
||||||
is-core-module@2.16.1:
|
is-core-module@2.16.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
hasown: 2.0.2
|
hasown: 2.0.2
|
||||||
|
@ -4250,6 +4279,8 @@ snapshots:
|
||||||
|
|
||||||
is-number@7.0.0: {}
|
is-number@7.0.0: {}
|
||||||
|
|
||||||
|
is-plain-obj@2.1.0: {}
|
||||||
|
|
||||||
is-plain-obj@4.1.0: {}
|
is-plain-obj@4.1.0: {}
|
||||||
|
|
||||||
is-potential-custom-element-name@1.0.1: {}
|
is-potential-custom-element-name@1.0.1: {}
|
||||||
|
@ -4305,6 +4336,10 @@ snapshots:
|
||||||
|
|
||||||
json-stable-stringify-without-jsonify@1.0.1: {}
|
json-stable-stringify-without-jsonify@1.0.1: {}
|
||||||
|
|
||||||
|
katex@0.13.24:
|
||||||
|
dependencies:
|
||||||
|
commander: 8.3.0
|
||||||
|
|
||||||
katex@0.16.22:
|
katex@0.16.22:
|
||||||
dependencies:
|
dependencies:
|
||||||
commander: 8.3.0
|
commander: 8.3.0
|
||||||
|
@ -4407,8 +4442,6 @@ snapshots:
|
||||||
|
|
||||||
lodash@4.17.21: {}
|
lodash@4.17.21: {}
|
||||||
|
|
||||||
longest-streak@3.1.0: {}
|
|
||||||
|
|
||||||
loupe@3.1.3: {}
|
loupe@3.1.3: {}
|
||||||
|
|
||||||
lru-cache@10.4.3: {}
|
lru-cache@10.4.3: {}
|
||||||
|
@ -4421,56 +4454,6 @@ snapshots:
|
||||||
|
|
||||||
marked@15.0.11: {}
|
marked@15.0.11: {}
|
||||||
|
|
||||||
mdast-util-from-markdown@2.0.2:
|
|
||||||
dependencies:
|
|
||||||
'@types/mdast': 4.0.4
|
|
||||||
'@types/unist': 3.0.3
|
|
||||||
decode-named-character-reference: 1.1.0
|
|
||||||
devlop: 1.1.0
|
|
||||||
mdast-util-to-string: 4.0.0
|
|
||||||
micromark: 4.0.2
|
|
||||||
micromark-util-decode-numeric-character-reference: 2.0.2
|
|
||||||
micromark-util-decode-string: 2.0.1
|
|
||||||
micromark-util-normalize-identifier: 2.0.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
unist-util-stringify-position: 4.0.0
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
mdast-util-math@3.0.0:
|
|
||||||
dependencies:
|
|
||||||
'@types/hast': 3.0.4
|
|
||||||
'@types/mdast': 4.0.4
|
|
||||||
devlop: 1.1.0
|
|
||||||
longest-streak: 3.1.0
|
|
||||||
mdast-util-from-markdown: 2.0.2
|
|
||||||
mdast-util-to-markdown: 2.1.2
|
|
||||||
unist-util-remove-position: 5.0.0
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
mdast-util-phrasing@4.1.0:
|
|
||||||
dependencies:
|
|
||||||
'@types/mdast': 4.0.4
|
|
||||||
unist-util-is: 6.0.0
|
|
||||||
|
|
||||||
mdast-util-to-markdown@2.1.2:
|
|
||||||
dependencies:
|
|
||||||
'@types/mdast': 4.0.4
|
|
||||||
'@types/unist': 3.0.3
|
|
||||||
longest-streak: 3.1.0
|
|
||||||
mdast-util-phrasing: 4.1.0
|
|
||||||
mdast-util-to-string: 4.0.0
|
|
||||||
micromark-util-classify-character: 2.0.1
|
|
||||||
micromark-util-decode-string: 2.0.1
|
|
||||||
unist-util-visit: 5.0.0
|
|
||||||
zwitch: 2.0.4
|
|
||||||
|
|
||||||
mdast-util-to-string@4.0.0:
|
|
||||||
dependencies:
|
|
||||||
'@types/mdast': 4.0.4
|
|
||||||
|
|
||||||
mdsvex@0.11.2(svelte@5.28.2):
|
mdsvex@0.11.2(svelte@5.28.2):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 2.0.11
|
'@types/unist': 2.0.11
|
||||||
|
@ -4515,149 +4498,6 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
micromark-core-commonmark@2.0.3:
|
|
||||||
dependencies:
|
|
||||||
decode-named-character-reference: 1.1.0
|
|
||||||
devlop: 1.1.0
|
|
||||||
micromark-factory-destination: 2.0.1
|
|
||||||
micromark-factory-label: 2.0.1
|
|
||||||
micromark-factory-space: 2.0.1
|
|
||||||
micromark-factory-title: 2.0.1
|
|
||||||
micromark-factory-whitespace: 2.0.1
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-chunked: 2.0.1
|
|
||||||
micromark-util-classify-character: 2.0.1
|
|
||||||
micromark-util-html-tag-name: 2.0.1
|
|
||||||
micromark-util-normalize-identifier: 2.0.1
|
|
||||||
micromark-util-resolve-all: 2.0.1
|
|
||||||
micromark-util-subtokenize: 2.1.0
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-extension-math@3.1.0:
|
|
||||||
dependencies:
|
|
||||||
'@types/katex': 0.16.7
|
|
||||||
devlop: 1.1.0
|
|
||||||
katex: 0.16.22
|
|
||||||
micromark-factory-space: 2.0.1
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-factory-destination@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-factory-label@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
devlop: 1.1.0
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-factory-space@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-factory-title@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-factory-space: 2.0.1
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-factory-whitespace@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-factory-space: 2.0.1
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-util-character@2.1.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-util-chunked@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
|
|
||||||
micromark-util-classify-character@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-util-combine-extensions@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-chunked: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-util-decode-numeric-character-reference@2.0.2:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
|
|
||||||
micromark-util-decode-string@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
decode-named-character-reference: 1.1.0
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-decode-numeric-character-reference: 2.0.2
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
|
|
||||||
micromark-util-encode@2.0.1: {}
|
|
||||||
|
|
||||||
micromark-util-html-tag-name@2.0.1: {}
|
|
||||||
|
|
||||||
micromark-util-normalize-identifier@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
|
|
||||||
micromark-util-resolve-all@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-util-sanitize-uri@2.0.1:
|
|
||||||
dependencies:
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-encode: 2.0.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
|
|
||||||
micromark-util-subtokenize@2.1.0:
|
|
||||||
dependencies:
|
|
||||||
devlop: 1.1.0
|
|
||||||
micromark-util-chunked: 2.0.1
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
|
|
||||||
micromark-util-symbol@2.0.1: {}
|
|
||||||
|
|
||||||
micromark-util-types@2.0.2: {}
|
|
||||||
|
|
||||||
micromark@4.0.2:
|
|
||||||
dependencies:
|
|
||||||
'@types/debug': 4.1.12
|
|
||||||
debug: 4.4.0
|
|
||||||
decode-named-character-reference: 1.1.0
|
|
||||||
devlop: 1.1.0
|
|
||||||
micromark-core-commonmark: 2.0.3
|
|
||||||
micromark-factory-space: 2.0.1
|
|
||||||
micromark-util-character: 2.1.1
|
|
||||||
micromark-util-chunked: 2.0.1
|
|
||||||
micromark-util-combine-extensions: 2.0.1
|
|
||||||
micromark-util-decode-numeric-character-reference: 2.0.2
|
|
||||||
micromark-util-encode: 2.0.1
|
|
||||||
micromark-util-normalize-identifier: 2.0.1
|
|
||||||
micromark-util-resolve-all: 2.0.1
|
|
||||||
micromark-util-sanitize-uri: 2.0.1
|
|
||||||
micromark-util-subtokenize: 2.1.0
|
|
||||||
micromark-util-symbol: 2.0.1
|
|
||||||
micromark-util-types: 2.0.2
|
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
|
||||||
|
|
||||||
micromatch@4.0.8:
|
micromatch@4.0.8:
|
||||||
dependencies:
|
dependencies:
|
||||||
braces: 3.0.3
|
braces: 3.0.3
|
||||||
|
@ -4725,6 +4565,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
callsites: 3.1.0
|
callsites: 3.1.0
|
||||||
|
|
||||||
|
parse5@6.0.1: {}
|
||||||
|
|
||||||
parse5@7.3.0:
|
parse5@7.3.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
entities: 6.0.0
|
entities: 6.0.0
|
||||||
|
@ -4834,6 +4676,10 @@ snapshots:
|
||||||
|
|
||||||
prismjs@1.30.0: {}
|
prismjs@1.30.0: {}
|
||||||
|
|
||||||
|
property-information@5.6.0:
|
||||||
|
dependencies:
|
||||||
|
xtend: 4.0.2
|
||||||
|
|
||||||
property-information@6.5.0: {}
|
property-information@6.5.0: {}
|
||||||
|
|
||||||
property-information@7.0.0: {}
|
property-information@7.0.0: {}
|
||||||
|
@ -4862,6 +4708,15 @@ snapshots:
|
||||||
hast-util-to-string: 2.0.0
|
hast-util-to-string: 2.0.0
|
||||||
katex: 0.16.22
|
katex: 0.16.22
|
||||||
|
|
||||||
|
rehype-katex@5.0.0:
|
||||||
|
dependencies:
|
||||||
|
'@types/katex': 0.11.1
|
||||||
|
hast-util-to-text: 2.0.1
|
||||||
|
katex: 0.13.24
|
||||||
|
rehype-parse: 7.0.1
|
||||||
|
unified: 9.2.2
|
||||||
|
unist-util-visit: 2.0.3
|
||||||
|
|
||||||
rehype-mermaid@3.0.0(playwright@1.52.0):
|
rehype-mermaid@3.0.0(playwright@1.52.0):
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/hast': 3.0.4
|
'@types/hast': 3.0.4
|
||||||
|
@ -4878,14 +4733,14 @@ snapshots:
|
||||||
transitivePeerDependencies:
|
transitivePeerDependencies:
|
||||||
- supports-color
|
- supports-color
|
||||||
|
|
||||||
remark-math@6.0.0:
|
rehype-parse@7.0.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/mdast': 4.0.4
|
hast-util-from-parse5: 6.0.1
|
||||||
mdast-util-math: 3.0.0
|
parse5: 6.0.1
|
||||||
micromark-extension-math: 3.1.0
|
|
||||||
unified: 11.0.5
|
remark-math@2.0.1: {}
|
||||||
transitivePeerDependencies:
|
|
||||||
- supports-color
|
repeat-string@1.6.1: {}
|
||||||
|
|
||||||
resolve-from@4.0.0: {}
|
resolve-from@4.0.0: {}
|
||||||
|
|
||||||
|
@ -4970,6 +4825,8 @@ snapshots:
|
||||||
|
|
||||||
source-map-js@1.2.1: {}
|
source-map-js@1.2.1: {}
|
||||||
|
|
||||||
|
space-separated-tokens@1.1.5: {}
|
||||||
|
|
||||||
space-separated-tokens@2.0.2: {}
|
space-separated-tokens@2.0.2: {}
|
||||||
|
|
||||||
stackback@0.0.2: {}
|
stackback@0.0.2: {}
|
||||||
|
@ -5076,6 +4933,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
punycode: 2.3.1
|
punycode: 2.3.1
|
||||||
|
|
||||||
|
trough@1.0.5: {}
|
||||||
|
|
||||||
trough@2.2.0: {}
|
trough@2.2.0: {}
|
||||||
|
|
||||||
ts-api-utils@2.1.0(typescript@5.8.3):
|
ts-api-utils@2.1.0(typescript@5.8.3):
|
||||||
|
@ -5114,11 +4973,27 @@ snapshots:
|
||||||
trough: 2.2.0
|
trough: 2.2.0
|
||||||
vfile: 6.0.3
|
vfile: 6.0.3
|
||||||
|
|
||||||
|
unified@9.2.2:
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.11
|
||||||
|
bail: 1.0.5
|
||||||
|
extend: 3.0.2
|
||||||
|
is-buffer: 2.0.5
|
||||||
|
is-plain-obj: 2.1.0
|
||||||
|
trough: 1.0.5
|
||||||
|
vfile: 4.2.1
|
||||||
|
|
||||||
|
unist-util-find-after@3.0.0:
|
||||||
|
dependencies:
|
||||||
|
unist-util-is: 4.1.0
|
||||||
|
|
||||||
unist-util-find-after@5.0.0:
|
unist-util-find-after@5.0.0:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
unist-util-is: 6.0.0
|
unist-util-is: 6.0.0
|
||||||
|
|
||||||
|
unist-util-is@4.1.0: {}
|
||||||
|
|
||||||
unist-util-is@5.2.1:
|
unist-util-is@5.2.1:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 2.0.11
|
'@types/unist': 2.0.11
|
||||||
|
@ -5140,6 +5015,11 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
|
||||||
|
unist-util-visit-parents@3.1.1:
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.11
|
||||||
|
unist-util-is: 4.1.0
|
||||||
|
|
||||||
unist-util-visit-parents@5.1.3:
|
unist-util-visit-parents@5.1.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 2.0.11
|
'@types/unist': 2.0.11
|
||||||
|
@ -5150,6 +5030,12 @@ snapshots:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
unist-util-is: 6.0.0
|
unist-util-is: 6.0.0
|
||||||
|
|
||||||
|
unist-util-visit@2.0.3:
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.11
|
||||||
|
unist-util-is: 4.1.0
|
||||||
|
unist-util-visit-parents: 3.1.1
|
||||||
|
|
||||||
unist-util-visit@4.1.2:
|
unist-util-visit@4.1.2:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 2.0.11
|
'@types/unist': 2.0.11
|
||||||
|
@ -5170,6 +5056,8 @@ snapshots:
|
||||||
|
|
||||||
uuid@11.1.0: {}
|
uuid@11.1.0: {}
|
||||||
|
|
||||||
|
vfile-location@3.2.0: {}
|
||||||
|
|
||||||
vfile-location@5.0.3:
|
vfile-location@5.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
@ -5185,6 +5073,13 @@ snapshots:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
unist-util-stringify-position: 4.0.0
|
unist-util-stringify-position: 4.0.0
|
||||||
|
|
||||||
|
vfile@4.2.1:
|
||||||
|
dependencies:
|
||||||
|
'@types/unist': 2.0.11
|
||||||
|
is-buffer: 2.0.5
|
||||||
|
unist-util-stringify-position: 2.0.3
|
||||||
|
vfile-message: 2.0.4
|
||||||
|
|
||||||
vfile@6.0.3:
|
vfile@6.0.3:
|
||||||
dependencies:
|
dependencies:
|
||||||
'@types/unist': 3.0.3
|
'@types/unist': 3.0.3
|
||||||
|
@ -5289,6 +5184,8 @@ snapshots:
|
||||||
dependencies:
|
dependencies:
|
||||||
xml-name-validator: 5.0.0
|
xml-name-validator: 5.0.0
|
||||||
|
|
||||||
|
web-namespaces@1.1.4: {}
|
||||||
|
|
||||||
web-namespaces@2.0.1: {}
|
web-namespaces@2.0.1: {}
|
||||||
|
|
||||||
webidl-conversions@7.0.0: {}
|
webidl-conversions@7.0.0: {}
|
||||||
|
@ -5321,6 +5218,8 @@ snapshots:
|
||||||
|
|
||||||
xmlchars@2.2.0: {}
|
xmlchars@2.2.0: {}
|
||||||
|
|
||||||
|
xtend@4.0.2: {}
|
||||||
|
|
||||||
yaml@1.10.2: {}
|
yaml@1.10.2: {}
|
||||||
|
|
||||||
yocto-queue@0.1.0: {}
|
yocto-queue@0.1.0: {}
|
||||||
|
|
14
src/app.css
14
src/app.css
|
@ -1,12 +1,12 @@
|
||||||
body {
|
body {
|
||||||
margin: 0;
|
margin: 0;
|
||||||
padding: 0;
|
padding: 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
* {
|
* {
|
||||||
color: #ebdbb2;
|
color: #ebdbb2;
|
||||||
font-family: 'Inter';
|
font-family: 'Inter';
|
||||||
font-optical-sizing: auto;
|
font-optical-sizing: auto;
|
||||||
font-weight: 400;
|
font-weight: 400;
|
||||||
font-style: normal;
|
font-style: normal;
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,25 +1,27 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
import './article.css';
|
import './article.css';
|
||||||
|
import HorizontalBreak from './HorizontalBreak.svelte';
|
||||||
|
|
||||||
export let title;
|
export let title;
|
||||||
export let date;
|
export let date;
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div>
|
<div class="heading">
|
||||||
<h1>{title}</h1>
|
<h1>{title}</h1>
|
||||||
<p>{date}</p>
|
<p>{date}</p>
|
||||||
</div>
|
</div>
|
||||||
|
<HorizontalBreak />
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
div {
|
.heading {
|
||||||
width: 100%;
|
width: 100%;
|
||||||
}
|
}
|
||||||
|
|
||||||
h1 {
|
.heading > h1 {
|
||||||
display: inline-block;
|
display: inline-block;
|
||||||
}
|
}
|
||||||
|
|
||||||
p {
|
.heading > p {
|
||||||
float: right;
|
float: right;
|
||||||
padding-left: auto;
|
padding-left: auto;
|
||||||
padding-right: auto;
|
padding-right: auto;
|
||||||
|
|
|
@ -1,13 +1,12 @@
|
||||||
<script lang="ts">
|
<script lang="ts">
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div>
|
<div class="horizontal_break"></div>
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
div {
|
.horizontal_break {
|
||||||
margin-top: 1em;
|
margin-top: 1em;
|
||||||
background-color: #928374;
|
background-color: #928374;
|
||||||
height: 1px;
|
height: 1px;
|
||||||
}
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -4,7 +4,6 @@
|
||||||
|
|
||||||
export let title;
|
export let title;
|
||||||
export let date;
|
export let date;
|
||||||
|
|
||||||
</script>
|
</script>
|
||||||
|
|
||||||
<div class="container">
|
<div class="container">
|
||||||
|
@ -19,31 +18,29 @@
|
||||||
</div>
|
</div>
|
||||||
|
|
||||||
<style>
|
<style>
|
||||||
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
|
@import url('https://fonts.googleapis.com/css2?family=Inter:ital,opsz,wght@0,14..32,100..900;1,14..32,100..900&display=swap');
|
||||||
|
|
||||||
.container {
|
.container {
|
||||||
background-color: #1d2021;
|
background-color: #1d2021;
|
||||||
display: flex;
|
display: flex;
|
||||||
}
|
}
|
||||||
|
|
||||||
.body {
|
.body {
|
||||||
flex: 3;
|
flex: 3;
|
||||||
padding: 1em;
|
padding: 1em;
|
||||||
background-color: #282828;
|
background-color: #282828;
|
||||||
text-wrap-mode: wrap;
|
text-wrap-mode: wrap;
|
||||||
|
|
||||||
min-width: 80ch;
|
min-width: 80ch;
|
||||||
max-width: 80ch;
|
max-width: 80ch;
|
||||||
|
|
||||||
border-left: 1px solid #928374;
|
border-left: 1px solid #928374;
|
||||||
border-right: 1px solid #928374;
|
border-right: 1px solid #928374;
|
||||||
|
|
||||||
text-align: justify;
|
text-align: justify;
|
||||||
|
}
|
||||||
}
|
|
||||||
|
|
||||||
.padding {
|
|
||||||
flex: 1;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
.padding {
|
||||||
|
flex: 1;
|
||||||
|
}
|
||||||
</style>
|
</style>
|
||||||
|
|
|
@ -1,13 +0,0 @@
|
||||||
<script lang="ts">
|
|
||||||
let { children } = $props();
|
|
||||||
</script>
|
|
||||||
|
|
||||||
<div>
|
|
||||||
{@render children()}
|
|
||||||
</div>
|
|
||||||
|
|
||||||
<style>
|
|
||||||
div {
|
|
||||||
margin-top: 1em;
|
|
||||||
}
|
|
||||||
</style>
|
|
|
@ -31,3 +31,13 @@ h2 {
|
||||||
margin-right: 0;
|
margin-right: 0;
|
||||||
font-weight: bold;
|
font-weight: bold;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
.katex {
|
||||||
|
background-color: #1d2021;
|
||||||
|
padding: 1em;
|
||||||
|
border: 1px solid #928374;
|
||||||
|
border-radius: 2px;
|
||||||
|
width: max-content;
|
||||||
|
margin-left: auto;
|
||||||
|
margin-right: auto;
|
||||||
|
}
|
||||||
|
|
|
@ -3,100 +3,104 @@ title: The Graphics Pipeline
|
||||||
date: "April 20 - 2025"
|
date: "April 20 - 2025"
|
||||||
---
|
---
|
||||||
|
|
||||||
<script>
|
Ever wondered how games put all that gore on your display? All that beauty is brought into life by
|
||||||
import Paragraph from '../Paragraph.svelte';
|
a process called **rendering**, and at the heart of it, is the **graphics pipeline**.
|
||||||
import HorizontalBreak from '../HorizontalBreak.svelte';
|
In this article we'll dive deep into the intricate details of this beast.
|
||||||
</script>
|
|
||||||
|
|
||||||
<HorizontalBreak/>
|
Like any pipeline, the **graphics pipeline** is comprised
|
||||||
|
|
||||||
<Paragraph>
|
|
||||||
|
|
||||||
Ever wondered how games put all that gore on your display? Well you're about to find out :)
|
|
||||||
|
|
||||||
At the heart of rendering, is the **Graphics Pipeline**. And like any pipeline, it's comprised
|
|
||||||
of several **stages**, each of which can be a pipeline in itself or even parallelized.
|
of several **stages**, each of which can be a pipeline in itself or even parallelized.
|
||||||
Each stage takes some input data (and configuration), to generate some output for the next stage.
|
Each stage takes some input (data and configuration) to generate some output data for the next stage.
|
||||||
</Paragraph>
|
We can coarsely divide the pipeline into **4 stages**:
|
||||||
|
|
||||||
<Paragraph>
|
```math
|
||||||
|
\texttt{Application} \rightarrow \color{#fabd2f}{\texttt{GeometryProcessing}}\color{none} \rightarrow \texttt{Rasterization} \rightarrow \texttt{PixelProcessing}
|
||||||
|
```
|
||||||
|
|
||||||
We can coarsely divide the **Graphics Pipeline** into 4 stages:
|
The pipeline will then serve the output of the **pixel processing** stage, which is a **rendered image**,
|
||||||
|
|
||||||
**Application -> Geometry Processing -> Rasterization -> Pixel Processing**
|
|
||||||
|
|
||||||
The pipeline will then serve the output of the **Pixel Processing** stage, which is a **rendered image**,
|
|
||||||
to your pretty eyes using your display.
|
to your pretty eyes using your display.
|
||||||
</Paragraph>
|
But to avoid drowning you in overviews, let's jump right into the gory details of the **geometry processing**
|
||||||
|
|
||||||
<Paragraph>
|
|
||||||
But to avoid drowning you in overviews, let's jump right into the details of the "Geometry Processing"
|
|
||||||
stage and have a recap afterwards to demystify this 4-stage division.
|
stage and have a recap afterwards to demystify this 4-stage division.
|
||||||
</Paragraph>
|
|
||||||
|
|
||||||
<Paragraph>
|
|
||||||
|
|
||||||
## Surfaces
|
## Surfaces
|
||||||
In order to display a murder scene, we need to have a way of **representing** the deceased in computer memory.
|
|
||||||
|
Ever been jump-scared by this sight in an FPS? Why are things rendered like that?
|
||||||
|
|
||||||
|
In order to display a scene (like a murder scene),
|
||||||
|
we need to have a way of **representing** the **surface** of the composing objects (like corpses) in computer-memory.
|
||||||
We only care about the **surface** since we won't be seeing the insides anyways---Not that we want to.
|
We only care about the **surface** since we won't be seeing the insides anyways---Not that we want to.
|
||||||
At this stage, we only care about the **shape** or the **geometry** of the **surface**.
|
At this stage, we only care about the **shape** or the **geometry** of the **surface**.
|
||||||
Texturing, lighting and all the sweet gory details comes at a much later stage once all the **geometry** has been processed.
|
Texturing, lighting and all the sweet gory details comes at a much later stage once all the **geometry** have been processed.
|
||||||
|
|
||||||
But how should we represent surfaces in memory?
|
But how do we represent surfaces in computer-memory?
|
||||||
</Paragraph>
|
|
||||||
|
|
||||||
## Vertices
|
## Vertices
|
||||||
<Paragraph>
|
|
||||||
|
|
||||||
There are several ways to **represent 3d objects** for a computer to understand.
|
There are several ways to **represent** the surfaces of 3d objects for a computer to understand.
|
||||||
For instance, **NURB surfaces** are great for representing **curves**
|
For instance, **NURB surfaces** are great for representing **curves**
|
||||||
and it's all about the **high-precision** needed to do **CAD**.
|
and it's all about the **high-precision** needed to do **CAD**.
|
||||||
We could also do **ray-tracing** using fancy equations for rendering **photo-realistic** images.
|
We could also do **ray-tracing** using fancy equations for rendering **photo-realistic** images.
|
||||||
</Paragraph>
|
|
||||||
|
|
||||||
<Paragraph>
|
|
||||||
|
|
||||||
These are all great--ignoring the fact that they would take "an eternity" to process.
|
These are all great--ignoring the fact that they would take an eternity to process...
|
||||||
But what we need is a **hardware-friendly** approach that can do this for an entire scene with
|
But what we need is a **performant** approach that can do this for an entire scene with
|
||||||
hundereds of thousands of objects for at least **60 times undr a second**. What we need is **polygonal modeling**.
|
hundereds of thousands of objects (like a lot of corpses) in under a small fraction of a second. What we need is **polygonal modeling**.
|
||||||
</Paragraph>
|
|
||||||
|
|
||||||
<Paragraph>
|
|
||||||
|
|
||||||
**Polygonal modeling** allows us to do **real-time rendering**. The idea is that we only need an
|
**Polygonal modeling** enables us to do an exciting thing called **real-time rendering**. The idea is that we only need an
|
||||||
**approximation** of a surface to render it **realisticly-enough** for us to have some fun killing time!
|
**approximation** of a surface to render it **realisticly-enough** for us to have some fun killing time!
|
||||||
We can achieve this approximation using a collection of **triangles**, **lines** and **dots** (primitives),
|
We can achieve this approximation using a collection of **triangles**, **lines** and **dots** (primitives),
|
||||||
which themselves are composed of a series of **vertices** (points in space).
|
which themselves are composed of a series of **vertices** (points in space).
|
||||||
</Paragraph>
|
|
||||||
|
|
||||||
<Paragraph>
|
|
||||||
|
|
||||||
A **vertex** is simply a point in space.
|
A **vertex** is simply a point in space.
|
||||||
Once we get enough of these **points**, we can conncet them to form **primitives** such as **triangles**, **lines** and **dots**.
|
Once we get enough of these **points**, we can conncet them to form **primitives** such as **triangles**, **lines** and **dots**.
|
||||||
And once we have enough **primitives** together, they form a **model** or a **mesh** (that we need for our corpse).
|
And once we connect enough of these **primitives** together, they form a **model** or a **mesh** (that we need for our corpse).
|
||||||
With some interesting models, we can compose a **scene**.
|
With some interesting models put together, we can compose a **scene** (like a murder scene :D).
|
||||||
</Paragraph>
|
|
||||||
|
|
||||||
<Paragraph>
|
|
||||||
|
|
||||||
But let's not get ahead of ourselves. The primary type of **primitive** we care about during **polygonal modeling**
|
But let's not get ahead of ourselves. The primary type of **primitive** that we care about during **polygonal modeling**
|
||||||
is a **triangle**. But why not squares or polygons with variable number of edges?
|
is a **triangle**. But why not squares or polygons with variable number of edges?
|
||||||
</Paragraph>
|
|
||||||
|
|
||||||
## Why Triangles?
|
## Why Triangles?
|
||||||
"Always Planar":
|
|
||||||
<Paragraph>
|
In **Euclidean geometry**, triangles are always **planar** (they exist only in one plane),
|
||||||
Triangles can never be __non-planar__(reside in more than 1 plane)! In Euclidean geometry, any
|
any polygon composed of more than 3 points may break this rule, but why does polygons residing in one plane so important
|
||||||
</Paragraph>
|
to us?
|
||||||
|
|
||||||
|
|
||||||
"Normal surface:"
|
Being non-planar makes it rather difficult to determine
|
||||||
|
|
||||||
"Algorithm Simplicity:"
|
|
||||||
|
|
||||||
"Predictable Winding Order:"
|
When a polygon exists only in one plane, we can safely imply that **only one face** of it can be visible
|
||||||
|
at any one time, this enables us to utilize a huge optimization technique called **back-face culling**.
|
||||||
|
Which means we avoid wasting a ton of **precious processing time** on the polygons that
|
||||||
|
we know won't be visible to us. We can safely **cull** the **back-faces** since we won't
|
||||||
|
be seeing the **back** of a polygon when it's in the context of a closed off model.
|
||||||
|
We figure this by simply using the **winding-order** of the triangle to determine whether we're looking at the
|
||||||
|
back of the triangle or the front of it.
|
||||||
|
|
||||||
|
|
||||||
|
Normal surface
|
||||||
|
|
||||||
|
|
||||||
|
Triangles also have very small **memory footprint**, for instance when using the **triangle-strip** topology (more on this very soon), for each additional triangle after the first one, only **one extra vertex** is needed.
|
||||||
|
|
||||||
|
|
||||||
|
The most important attribute however (in my opinion) is the **algorithmic simplicity**.
|
||||||
|
Any polygon or shape can be composed from a **set of triangle**, for instance a rectangle is
|
||||||
|
simply **two co-planar triangles**.
|
||||||
|
It is becoming an increasingly more common practice in computer science to break down
|
||||||
|
hard problems into simpler, smaller problems. This will be more convincing when we cover the **rasterization** stage :)
|
||||||
|
|
||||||
|
|
||||||
|
Bonus point: present day **hardwares** and **algorithms** have become **extremely efficient** at processing
|
||||||
|
triangles (sorting, rendering, etc) after eons of evolving around them.
|
||||||
|
|
||||||
|
|
||||||
|
## Primitive Topology
|
||||||
|
So, we got our set of triangles, but how do we make a model out of them?
|
||||||
|
|
||||||
|
|
||||||
## Primitive Topologies
|
|
||||||
|
|
||||||
## Indices
|
## Indices
|
||||||
|
|
||||||
|
@ -116,6 +120,8 @@ Triangles can never be __non-planar__(reside in more than 1 plane)! In Euclidean
|
||||||
|
|
||||||
## Tessellation & Geometry Shaders
|
## Tessellation & Geometry Shaders
|
||||||
|
|
||||||
|
## Let's Recap!
|
||||||
|
|
||||||
## Rasterizer
|
## Rasterizer
|
||||||
|
|
||||||
## Pixel Shader
|
## Pixel Shader
|
||||||
|
|
|
@ -1,18 +1,11 @@
|
||||||
import { mdsvex } from 'mdsvex';
|
import { mdsvex } from 'mdsvex';
|
||||||
import mdsvexConfig from './mdsvex.config.js';
|
import { mdsvex_config } from './mdsvex.config.js';
|
||||||
|
|
||||||
import adapter from '@sveltejs/adapter-static';
|
import adapter from '@sveltejs/adapter-static';
|
||||||
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
import { vitePreprocess } from '@sveltejs/vite-plugin-svelte';
|
||||||
|
|
||||||
/** @type {import('@sveltejs/kit').Config} */
|
/** @type {import('@sveltejs/kit').Config} */
|
||||||
const config = {
|
const config = {
|
||||||
// Consult https://svelte.dev/docs/kit/integrations
|
|
||||||
// for more information about preprocessors
|
|
||||||
preprocess: [
|
|
||||||
vitePreprocess(),
|
|
||||||
mdsvex(mdsvexConfig)
|
|
||||||
],
|
|
||||||
|
|
||||||
kit: {
|
kit: {
|
||||||
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
|
// adapter-auto only supports some environments, see https://svelte.dev/docs/kit/adapter-auto for a list.
|
||||||
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
// If your environment is not supported, or you settled on a specific environment, switch out the adapter.
|
||||||
|
@ -20,7 +13,14 @@ const config = {
|
||||||
adapter: adapter()
|
adapter: adapter()
|
||||||
},
|
},
|
||||||
|
|
||||||
extensions: ['.svelte', '.svx', '.md']
|
extensions: ['.svelte', '.svx', '.md'],
|
||||||
|
|
||||||
|
// Consult https://svelte.dev/docs/kit/integrations
|
||||||
|
// for more information about preprocessors
|
||||||
|
preprocess: [
|
||||||
|
vitePreprocess(),
|
||||||
|
mdsvex(mdsvex_config)
|
||||||
|
],
|
||||||
};
|
};
|
||||||
|
|
||||||
export default config;
|
export default config;
|
||||||
|
|
Loading…
Add table
Reference in a new issue