aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorLibravatar Kristóf Marussy <kristof@marussy.com>2024-04-18 18:40:31 +0200
committerLibravatar Kristóf Marussy <kristof@marussy.com>2024-04-18 19:59:51 +0200
commit419fcdbfd0aed6892ee4fb1fdb0d50eea55dead8 (patch)
tree08a888611ca944597e300fab9f6a9c5de676255c
parentdocs: update landing page (diff)
downloadrefinery-419fcdbfd0aed6892ee4fb1fdb0d50eea55dead8.tar.gz
refinery-419fcdbfd0aed6892ee4fb1fdb0d50eea55dead8.tar.zst
refinery-419fcdbfd0aed6892ee4fb1fdb0d50eea55dead8.zip
refactor(docs): update video cover
Also adds responsive-loader support for images.
-rw-r--r--subprojects/docs/package.json2
-rw-r--r--subprojects/docs/src/components/Video/cover-background.pngbin0 -> 1979050 bytes
-rw-r--r--subprojects/docs/src/components/Video/cover-background.png.license9
-rw-r--r--subprojects/docs/src/components/Video/cover.svg1
-rw-r--r--subprojects/docs/src/components/Video/cover.svg.license3
-rw-r--r--subprojects/docs/src/components/Video/index.module.css75
-rw-r--r--subprojects/docs/src/components/Video/index.tsx62
-rw-r--r--subprojects/docs/src/pages/index.tsx272
-rw-r--r--subprojects/docs/src/pages/video-cover.webpbin147992 -> 0 bytes
-rw-r--r--subprojects/docs/src/pages/video-cover.webp.license3
-rw-r--r--subprojects/docs/src/plugins/loadersPlugin.ts39
-rw-r--r--subprojects/docs/src/types.d.ts33
-rw-r--r--yarn.lock404
13 files changed, 729 insertions, 174 deletions
diff --git a/subprojects/docs/package.json b/subprojects/docs/package.json
index d928c5b1..853e3e46 100644
--- a/subprojects/docs/package.json
+++ b/subprojects/docs/package.json
@@ -49,6 +49,8 @@
49 "react": "^18.2.0", 49 "react": "^18.2.0",
50 "react-dom": "^18.2.0", 50 "react-dom": "^18.2.0",
51 "remark-smartypants": "^2.1.0", 51 "remark-smartypants": "^2.1.0",
52 "responsive-loader": "^3.1.2",
53 "sharp": "^0.33.3",
52 "swc-loader": "^0.2.6", 54 "swc-loader": "^0.2.6",
53 "terser-webpack-plugin": "^5.3.10", 55 "terser-webpack-plugin": "^5.3.10",
54 "unified": "^11.0.4", 56 "unified": "^11.0.4",
diff --git a/subprojects/docs/src/components/Video/cover-background.png b/subprojects/docs/src/components/Video/cover-background.png
new file mode 100644
index 00000000..11369ae3
--- /dev/null
+++ b/subprojects/docs/src/components/Video/cover-background.png
Binary files differ
diff --git a/subprojects/docs/src/components/Video/cover-background.png.license b/subprojects/docs/src/components/Video/cover-background.png.license
new file mode 100644
index 00000000..50ad65f2
--- /dev/null
+++ b/subprojects/docs/src/components/Video/cover-background.png.license
@@ -0,0 +1,9 @@
1SPDX-FileCopyrightText: 2024 The Refinery Authors <https://refinery.tools/>
2
3SPDX-License-Identifier: EPL-2.0
4
5Modified image based on "Low Angle Shot of Manufacturing Plant under Blue Sky"
6available under the CC-1.0 license at
7https://www.pexels.com/photo/low-angle-shot-of-manufacturing-plant-under-blue-sky-257700/
8Original image "Bulgaria, Vratsa, Abandoned image. Free for use." by "2427999" also available at
9https://pixabay.com/photos/bulgaria-vratsa-abandoned-industry-1351947/
diff --git a/subprojects/docs/src/components/Video/cover.svg b/subprojects/docs/src/components/Video/cover.svg
new file mode 100644
index 00000000..b263c8b3
--- /dev/null
+++ b/subprojects/docs/src/components/Video/cover.svg
@@ -0,0 +1 @@
<svg xmlns="http://www.w3.org/2000/svg" width="1280" height="720" viewBox="0 0 1280 720"><path fill="#fff" fill-opacity=".4" d="M0 95h1280v530H0z"/><path class="videocolor" fill-opacity=".702" d="M0 171h1205v378H0z"/><path fill="#CA1243" d="M1261 95h19v530h-19z"/><path class="videocolor" d="M0 171h19v378H0z"/><g class="videotitle"><path fill-rule="evenodd" d="M1143 387.09v26.293c-69.4 3.985-192.57 26.695-256 95.615v-31.074c64.343-63.744 180.16-88.046 256-90.834M887 211c55.152 64.14 162.7 91.63 256 98.004V335.3c-93.3 6.374-200.85 33.866-256 98.003v-30.676c22.983-34.262 96.979-66.532 153.51-80.476-56.535-13.944-130.53-46.214-153.51-80.475z"/><text font-size="72" font-weight="800" transform="translate(31 439)">Video</text><text font-size="72" font-weight="800" transform="translate(31 525)">introduction</text></g><path class="videoplay" fill-rule="evenodd" d="M593.12 284.23v151.53l131.07-75.765zm46.879-85.227c88.918 0 161 72.082 161 161s-72.082 161-161 161-161-72.082-161-161 72.082-161 161-161"/></svg>
diff --git a/subprojects/docs/src/components/Video/cover.svg.license b/subprojects/docs/src/components/Video/cover.svg.license
new file mode 100644
index 00000000..b80566a0
--- /dev/null
+++ b/subprojects/docs/src/components/Video/cover.svg.license
@@ -0,0 +1,3 @@
1SPDX-FileCopyrightText: 2024 The Refinery Authors <https://refinery.tools/>
2
3SPDX-License-Identifier: EPL-2.0
diff --git a/subprojects/docs/src/components/Video/index.module.css b/subprojects/docs/src/components/Video/index.module.css
new file mode 100644
index 00000000..209c5d64
--- /dev/null
+++ b/subprojects/docs/src/components/Video/index.module.css
@@ -0,0 +1,75 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6
7:global(.videocolor) {
8 fill: var(--ifm-color-primary);
9}
10
11[data-theme='dark'] :global(.videocolor) {
12 fill: var(--ifm-color-primary-darker);
13}
14
15.video__container {
16 position: relative;
17 width: 100%;
18 height: auto;
19 aspect-ratio: 560/315;
20 box-shadow: var(--ifm-global-shadow-lw);
21 transition: box-shadow var(--ifm-button-transition-duration) var(--ifm-transition-timing-default);
22}
23
24.video__container:hover,
25.video__container:focus-within {
26 box-shadow: var(--ifm-global-shadow-md);
27}
28
29.video,
30.video__button,
31.video__image,
32.video__svg,
33.video__svg > svg {
34 position: absolute;
35 top: 0;
36 left: 0;
37 width: 100%;
38 height: 100%;
39}
40
41.video__svg text {
42 font-family: var(--ifm-font-family-base);
43}
44
45.video__button {
46 margin: 0;
47 padding: 0;
48 border: none;
49 cursor: pointer;
50 background-size: cover;
51}
52
53.video__cover {
54 z-index: 1;
55}
56
57:global(.videoplay) {
58 fill: rgb(255 255 255 / 40%);
59 transition: fill var(--ifm-button-transition-duration) var(--ifm-transition-timing-default);
60}
61
62.video__container:hover :global(.videoplay),
63.video__container:focus-within :global(.videoplay) {
64 fill: rgb(255 255 255 / 70%);
65}
66
67:global(.videotitle) * {
68 fill: #303846;
69 transition: fill var(--ifm-button-transition-duration) var(--ifm-transition-timing-default);
70}
71
72.video__container:hover :global(.videotitle) *,
73.video__container:focus-within :global(.videotitle) * {
74 fill: #21252b;
75}
diff --git a/subprojects/docs/src/components/Video/index.tsx b/subprojects/docs/src/components/Video/index.tsx
new file mode 100644
index 00000000..bd36eaa4
--- /dev/null
+++ b/subprojects/docs/src/components/Video/index.tsx
@@ -0,0 +1,62 @@
1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors
3 *
4 * SPDX-License-Identifier: EPL-2.0
5 */
6
7import { useState } from 'react';
8
9import coverBackground from './cover-background.png?sizes[]=1920&sizes[]=1288&sizes[]=1108&&sizes[]=644&sizes[]=322&placeholder=true&rl';
10import Cover from './cover.svg';
11import styles from './index.module.css';
12
13export default function Video() {
14 const [started, setStarted] = useState(false);
15 return (
16 <>
17 <h2 className="sr-only">Check out the intro video</h2>
18 <div className="container">
19 <div className={styles['video__container']}>
20 {started ? (
21 <iframe
22 width="560"
23 height="315"
24 src="https://www.youtube-nocookie.com/embed/Qy_3udNsWsM?autoplay=1"
25 title="YouTube video player"
26 frameBorder="0"
27 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
28 referrerPolicy="strict-origin-when-cross-origin"
29 allowFullScreen
30 className={styles['video']}
31 />
32 ) : (
33 <button
34 type="button"
35 aria-label="Video introduction"
36 title="Play video (requires acceping cookies from YouTube)"
37 onClick={() => setStarted(true)}
38 className={styles['video__button']}
39 style={{
40 backgroundImage: `url("${coverBackground.placeholder}")`,
41 }}
42 >
43 <img
44 alt=""
45 src={coverBackground.src}
46 srcSet={coverBackground.srcSet}
47 width={coverBackground.width}
48 height={coverBackground.height}
49 sizes="(min-width: 1440px) 1288px, (min-width: 1140px) 1108px, calc(100vw - 32px)"
50 loading="lazy"
51 className={styles['video__image']}
52 />
53 <div className={styles['video__svg']}>
54 <Cover />
55 </div>
56 </button>
57 )}
58 </div>
59 </div>
60 </>
61 );
62}
diff --git a/subprojects/docs/src/pages/index.tsx b/subprojects/docs/src/pages/index.tsx
index 7caf5727..6b65c32b 100644
--- a/subprojects/docs/src/pages/index.tsx
+++ b/subprojects/docs/src/pages/index.tsx
@@ -7,12 +7,11 @@
7import Link from '@docusaurus/Link'; 7import Link from '@docusaurus/Link';
8import Layout from '@theme/Layout'; 8import Layout from '@theme/Layout';
9import clsx from 'clsx'; 9import clsx from 'clsx';
10import { useState } from 'react';
11 10
12import styles from './index.module.css'; 11import styles from './index.module.css';
13import videoCover from './video-cover.webp?url';
14 12
15import Features from '@site/src/components/Features'; 13import Features from '@site/src/components/Features';
14import Video from '@site/src/components/Video';
16 15
17function Hero() { 16function Hero() {
18 return ( 17 return (
@@ -62,52 +61,6 @@ function Hero() {
62 ); 61 );
63} 62}
64 63
65function Video() {
66 const [started, setStarted] = useState(false);
67 return (
68 <section className={clsx(styles['section'], styles['section--video'])}>
69 <h2 className="sr-only">Check out the intro video</h2>
70 <div className="container">
71 <div className={styles['video__container']}>
72 {started ? (
73 <iframe
74 width="560"
75 height="315"
76 src="https://www.youtube-nocookie.com/embed/Qy_3udNsWsM?autoplay=1"
77 title="YouTube video player"
78 frameBorder="0"
79 allow="accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share"
80 referrerPolicy="strict-origin-when-cross-origin"
81 allowFullScreen
82 className={styles['video']}
83 />
84 ) : (
85 <button
86 type="button"
87 title="Play video (requires acceping cookies from YouTube)"
88 onClick={() => setStarted(true)}
89 className={styles['video__button']}
90 >
91 <h2>Modeling with Graphs</h2>
92 <p>
93 Graph based models are widely used in software engineering for
94 systems models, the analysis of data structures, databases, and
95 AI test environments.
96 </p>
97 <p>
98 Testing, benchmarking or design-space exploration scnearios rely
99 on the automated generation of consistent models!
100 </p>
101 <img src={videoCover} alt="" className={styles['video__cover']} />
102 <div className={styles['video__play']} />
103 </button>
104 )}
105 </div>
106 </div>
107 </section>
108 );
109}
110
111function Publication({ 64function Publication({
112 doi, 65 doi,
113 pdf, 66 pdf,
@@ -153,113 +106,110 @@ Publication.defaultProps = {
153 106
154function Publications() { 107function Publications() {
155 return ( 108 return (
156 <div className={styles['section']}> 109 <div className="container">
157 <div className="container"> 110 <h2 className={styles['section__title']}>Related publications</h2>
158 <h2 className={styles['section__title']}>Related publications</h2> 111 <div className="row">
159 <div className="row"> 112 <div className="col col--6">
160 <div className="col col--6"> 113 <h3>Tool demonstration</h3>
161 <h3>Tool demonstration</h3> 114 <ul>
162 <ul> 115 <Publication
163 <Publication 116 doi="10.1145/3639478.3640045"
164 doi="10.1145/3639478.3640045" 117 pdf="pathname:///papers/icse24-demo.pdf"
165 pdf="pathname:///papers/icse24-demo.pdf" 118 video="https://youtu.be/Qy_3udNsWsM"
166 video="https://youtu.be/Qy_3udNsWsM" 119 >
167 > 120 K. Marussy, A. Ficsor, O. Semeráth, D. Varró: &ldquo;Refinery:
168 K. Marussy, A. Ficsor, O. Semeráth, D. Varró: &ldquo;Refinery: 121 Graph Solver as a Service&rdquo; <em>ICSE 2024 Demonstrations</em>
169 Graph Solver as a Service&rdquo;{' '} 122 </Publication>
170 <em>ICSE 2024 Demonstrations</em> 123 </ul>
171 </Publication> 124 <h3>Partial model specification language</h3>
172 </ul> 125 <ul>
173 <h3>Partial model specification language</h3> 126 <Publication
174 <ul> 127 doi="10.5381/jot.2020.19.3.a12"
175 <Publication 128 pdf="https://www.jot.fm/issues/issue_2020_03/article12.pdf"
176 doi="10.5381/jot.2020.19.3.a12" 129 video="https://www.youtube.com/watch?v=ggTbv_s5t2A"
177 pdf="https://www.jot.fm/issues/issue_2020_03/article12.pdf" 130 >
178 video="https://www.youtube.com/watch?v=ggTbv_s5t2A" 131 K. Marussy, O. Semeráth, A. Babikian, D. Varró:{' '}
179 > 132 <em>
180 K. Marussy, O. Semeráth, A. Babikian, D. Varró:{' '} 133 A Specification Language for Consistent Model Generation based
181 <em> 134 on Partial Models.
182 A Specification Language for Consistent Model Generation based 135 </em>{' '}
183 on Partial Models. 136 J. Object Technol. <b>19</b>(3): 3:1-22 (2020)
184 </em>{' '} 137 </Publication>
185 J. Object Technol. <b>19</b>(3): 3:1-22 (2020) 138 </ul>
186 </Publication> 139 <h3>Diverse and realistic graph generation</h3>
187 </ul> 140 <ul>
188 <h3>Diverse and realistic graph generation</h3> 141 <Publication
189 <ul> 142 doi="10.1007/s10009-019-00530-6"
190 <Publication 143 pdf="https://link.springer.com/content/pdf/10.1007/s10009-019-00530-6.pdf?pdf=button"
191 doi="10.1007/s10009-019-00530-6" 144 >
192 pdf="https://link.springer.com/content/pdf/10.1007/s10009-019-00530-6.pdf?pdf=button" 145 O. Semeráth, R. Farkas, G. Bergmann, D. Varró:{' '}
193 > 146 <em>
194 O. Semeráth, R. Farkas, G. Bergmann, D. Varró:{' '} 147 Diversity of graph models and graph generators in mutation
195 <em> 148 testing.
196 Diversity of graph models and graph generators in mutation 149 </em>{' '}
197 testing. 150 Int. J. Softw. Tools Technol. Transf. <b>22</b>(1): 57-78 (2020)
198 </em>{' '} 151 </Publication>
199 Int. J. Softw. Tools Technol. Transf. <b>22</b>(1): 57-78 (2020) 152 <Publication
200 </Publication> 153 doi="10.1007/s10270-021-00884-z"
201 <Publication 154 pdf="https://link.springer.com/content/pdf/10.1007/s10270-021-00884-z.pdf?pdf=button"
202 doi="10.1007/s10270-021-00884-z" 155 >
203 pdf="https://link.springer.com/content/pdf/10.1007/s10270-021-00884-z.pdf?pdf=button" 156 O. Semeráth, A. Babikian, B. Chen, C. Li, K. Marussy, G. Szárnyas,
204 > 157 D. Varró:{' '}
205 O. Semeráth, A. Babikian, B. Chen, C. Li, K. Marussy, G. 158 <em>
206 Szárnyas, D. Varró:{' '} 159 Automated generation of consistent, diverse and structurally
207 <em> 160 realistic graph models.
208 Automated generation of consistent, diverse and structurally 161 </em>{' '}
209 realistic graph models. 162 Softw. Syst. Model. <b>20</b>(5): 1713-1734 (2021)
210 </em>{' '} 163 </Publication>
211 Softw. Syst. Model. <b>20</b>(5): 1713-1734 (2021) 164 </ul>
212 </Publication> 165 </div>
213 </ul> 166 <div className="col col--6">
214 </div> 167 <h3>Consistent graph generation techniques</h3>
215 <div className="col col--6"> 168 <ul>
216 <h3>Consistent graph generation techniques</h3> 169 <Publication
217 <ul> 170 doi="10.1145/3180155.3180186"
218 <Publication 171 pdf="https://dl.acm.org/doi/pdf/10.1145/3180155.3180186"
219 doi="10.1145/3180155.3180186" 172 >
220 pdf="https://dl.acm.org/doi/pdf/10.1145/3180155.3180186" 173 O. Semeráth, A. Nagy, D. Varró: &ldquo;A graph solver for the
221 > 174 automated generation of consistent domain-specific models.&rdquo;{' '}
222 O. Semeráth, A. Nagy, D. Varró: &ldquo;A graph solver for the 175 <em>ICSE 2018:</em> 969-980
223 automated generation of consistent domain-specific 176 </Publication>
224 models.&rdquo; <em>ICSE 2018:</em> 969-980 177 <Publication
225 </Publication> 178 doi="10.1109/TSE.2020.3025732"
226 <Publication 179 pdf="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9201551"
227 doi="10.1109/TSE.2020.3025732" 180 >
228 pdf="https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=9201551" 181 K. Marussy, O. Semeráth, D. Varró:{' '}
229 > 182 <em>
230 K. Marussy, O. Semeráth, D. Varró:{' '} 183 Automated Generation of Consistent Graph Models With
231 <em> 184 Multiplicity Reasoning.
232 Automated Generation of Consistent Graph Models With 185 </em>{' '}
233 Multiplicity Reasoning. 186 IEEE Trans. Softw. Eng. <b>48</b>(5): 1610-1629 (2022)
234 </em>{' '} 187 </Publication>
235 IEEE Trans. Softw. Eng. <b>48</b>(5): 1610-1629 (2022) 188 <Publication
236 </Publication> 189 doi="10.1007/s10270-021-00918-6"
237 <Publication 190 pdf="https://link.springer.com/content/pdf/10.1007/s10270-021-00918-6.pdf?pdf=button"
238 doi="10.1007/s10270-021-00918-6" 191 >
239 pdf="https://link.springer.com/content/pdf/10.1007/s10270-021-00918-6.pdf?pdf=button" 192 A. Babikian, O. Semeráth, A. Li, K. Marussy, D. Varró:{' '}
240 > 193 <em>
241 A. Babikian, O. Semeráth, A. Li, K. Marussy, D. Varró:{' '} 194 Automated generation of consistent models using qualitative
242 <em> 195 abstractions and exploration strategies.
243 Automated generation of consistent models using qualitative 196 </em>{' '}
244 abstractions and exploration strategies. 197 Softw. Syst. Model. <b>21</b>(5): 1763-1787 (2022)
245 </em>{' '} 198 </Publication>
246 Softw. Syst. Model. <b>21</b>(5): 1763-1787 (2022) 199 </ul>
247 </Publication> 200 <h3>Correctness proofs</h3>
248 </ul> 201 <ul>
249 <h3>Correctness proofs</h3> 202 <Publication
250 <ul> 203 doi="10.1007/978-3-319-75396-6_16"
251 <Publication 204 pdf="https://inf.mit.bme.hu/sites/default/files/publications/fmhe-model-generation.pdf"
252 doi="10.1007/978-3-319-75396-6_16" 205 >
253 pdf="https://inf.mit.bme.hu/sites/default/files/publications/fmhe-model-generation.pdf" 206 D. Varró, O. Semeráth, G. Szárnyas, Á. Horváth: &ldquo;Towards the
254 > 207 Automated Generation of Consistent, Diverse, Scalable and
255 D. Varró, O. Semeráth, G. Szárnyas, Á. Horváth: &ldquo;Towards 208 Realistic Graph Models.&rdquo;{' '}
256 the Automated Generation of Consistent, Diverse, Scalable and 209 <em>Graph Transformation, Specifications, and Nets</em> 2018:
257 Realistic Graph Models.&rdquo;{' '} 210 285-312
258 <em>Graph Transformation, Specifications, and Nets</em> 2018: 211 </Publication>
259 285-312 212 </ul>
260 </Publication>
261 </ul>
262 </div>
263 </div> 213 </div>
264 </div> 214 </div>
265 </div> 215 </div>
@@ -270,11 +220,15 @@ export default function Home() {
270 return ( 220 return (
271 <Layout> 221 <Layout>
272 <Hero /> 222 <Hero />
273 <div className={styles['section']}> 223 <section className={styles['section']}>
274 <Features /> 224 <Features />
275 </div> 225 </section>
276 <Video /> 226 <section className={clsx(styles['section'], styles['section--video'])}>
277 <Publications /> 227 <Video />
228 </section>
229 <section className={styles['section']}>
230 <Publications />
231 </section>
278 </Layout> 232 </Layout>
279 ); 233 );
280} 234}
diff --git a/subprojects/docs/src/pages/video-cover.webp b/subprojects/docs/src/pages/video-cover.webp
deleted file mode 100644
index 50ebe1ab..00000000
--- a/subprojects/docs/src/pages/video-cover.webp
+++ /dev/null
Binary files differ
diff --git a/subprojects/docs/src/pages/video-cover.webp.license b/subprojects/docs/src/pages/video-cover.webp.license
deleted file mode 100644
index ff75bc7c..00000000
--- a/subprojects/docs/src/pages/video-cover.webp.license
+++ /dev/null
@@ -1,3 +0,0 @@
1SPDX-FileCopyrightText: 2023 The Refinery Authors <https://refinery.tools/>
2
3SPDX-License-Identifier: EPL-2.0
diff --git a/subprojects/docs/src/plugins/loadersPlugin.ts b/subprojects/docs/src/plugins/loadersPlugin.ts
index 325d7f67..8b52667c 100644
--- a/subprojects/docs/src/plugins/loadersPlugin.ts
+++ b/subprojects/docs/src/plugins/loadersPlugin.ts
@@ -1,15 +1,19 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors 2 * Copyright (c) 2016, Jeremy Stucki
3 * Copyright (c) Facebook, Inc. and its affiliates.
4 * Copyright (c) 2024 The Refinery Authors
3 * 5 *
4 * SPDX-License-Identifier: EPL-2.0 6 * SPDX-License-Identifier: BSD-3-Clause AND MIT AND EPL-2.0
5 */ 7 */
6 8
7import type { Plugin } from '@docusaurus/types'; 9import type { Plugin } from '@docusaurus/types';
10// @ts-expect-error No typings available for `responsive-loader`.
11import sharp from 'responsive-loader/sharp';
8 12
9export default function loadersPlugin(): Plugin { 13export default function loadersPlugin(): Plugin {
10 return { 14 return {
11 name: 'refinery-loaders-plugin', 15 name: 'refinery-loaders-plugin',
12 configureWebpack(config) { 16 configureWebpack(config, isServer) {
13 let svgoDisabled = false; 17 let svgoDisabled = false;
14 const rules = [...(config.module?.rules ?? [])]; 18 const rules = [...(config.module?.rules ?? [])];
15 rules.forEach((rule) => { 19 rules.forEach((rule) => {
@@ -38,6 +42,8 @@ export default function loadersPlugin(): Plugin {
38 ) { 42 ) {
39 return; 43 return;
40 } 44 }
45 // Skip SVGR when importing SVG files with ?url.
46 svgLoader.resourceQuery = { not: /[?&]url$/ };
41 const { 47 const {
42 use: [loader], 48 use: [loader],
43 } = svgLoader; 49 } = svgLoader;
@@ -48,6 +54,7 @@ export default function loadersPlugin(): Plugin {
48 ) { 54 ) {
49 return; 55 return;
50 } 56 }
57
51 loader.options = { 58 loader.options = {
52 ...(typeof loader.options === 'object' ? loader.options : {}), 59 ...(typeof loader.options === 'object' ? loader.options : {}),
53 svgo: true, 60 svgo: true,
@@ -78,7 +85,31 @@ export default function loadersPlugin(): Plugin {
78 'module.rules': 'replace', 85 'module.rules': 'replace',
79 }, 86 },
80 module: { 87 module: {
81 rules, 88 rules: [
89 // Configuration based on
90 // https://github.com/dazuaz/responsive-loader/blob/ef2c806fcd36f06f6be8a0b97e09f40c3d86d3ac/README.md
91 {
92 test: /\.(png|jpe?g)$/,
93 resourceQuery: /[?&]rl$/,
94 use: [
95 {
96 loader: 'responsive-loader',
97 options: {
98 /* eslint-disable-next-line @typescript-eslint/no-unsafe-assignment --
99 * No typings available for `responsive-loader`.
100 */
101 adapter: sharp,
102 format: 'webp',
103 // See
104 // https://github.com/facebook/docusaurus/blob/c745021b01a8b88d34e1d772278d7171ad8acdf5/packages/docusaurus-plugin-ideal-image/src/index.ts#L62-L66
105 emitFile: !isServer,
106 name: 'assets/images/[name].[hash:hex:7].[width].[ext]',
107 },
108 },
109 ],
110 },
111 ...rules,
112 ],
82 }, 113 },
83 }; 114 };
84 }, 115 },
diff --git a/subprojects/docs/src/types.d.ts b/subprojects/docs/src/types.d.ts
index 0d1b2226..658763e7 100644
--- a/subprojects/docs/src/types.d.ts
+++ b/subprojects/docs/src/types.d.ts
@@ -1,10 +1,39 @@
1/* 1/*
2 * SPDX-FileCopyrightText: 2024 The Refinery Authors 2 * Copyright (c) 2016, Jeremy Stucki
3 * Copyright (c) 2024 The Refinery Authors
3 * 4 *
4 * SPDX-License-Identifier: EPL-2.0 5 * SPDX-License-Identifier: BSD-3-Clause AND EPL-2.0
6 *
7 * Typings for `ResponsiveImageOutput` copied from
8 * https://github.com/dazuaz/responsive-loader/blob/ef2c806fcd36f06f6be8a0b97e09f40c3d86d3ac/README.md
5 */ 9 */
6 10
7declare module '*?url' { 11declare module '*?url' {
8 const url: string; 12 const url: string;
9 export default url; 13 export default url;
10} 14}
15
16declare module '*&url' {
17 const url: string;
18 export default url;
19}
20
21interface ResponsiveImageOutput {
22 src: string;
23 srcSet: string;
24 placeholder: string | undefined;
25 images: { path: string; width: number; height: number }[];
26 width: number;
27 height: number;
28 toString: () => string;
29}
30
31declare module '*?rl' {
32 const src: ResponsiveImageOutput;
33 export default src;
34}
35
36declare module '*&rl' {
37 const src: ResponsiveImageOutput;
38 export default src;
39}
diff --git a/yarn.lock b/yarn.lock
index c20d7ddf..c27f0f77 100644
--- a/yarn.lock
+++ b/yarn.lock
@@ -2280,6 +2280,15 @@ __metadata:
2280 languageName: node 2280 languageName: node
2281 linkType: hard 2281 linkType: hard
2282 2282
2283"@emnapi/runtime@npm:^1.1.0":
2284 version: 1.1.1
2285 resolution: "@emnapi/runtime@npm:1.1.1"
2286 dependencies:
2287 tslib: "npm:^2.4.0"
2288 checksum: 10c0/c11ee57abf0ec643e64ccdace4b4fcc0b0c7b1117a191f969e84ae3669841aa90d2c17fa35b73f5a66fc0c843c8caca7bf11187faaeaa526bcfb7dbfb9b85de9
2289 languageName: node
2290 linkType: hard
2291
2283"@emotion/babel-plugin@npm:^11.11.0": 2292"@emotion/babel-plugin@npm:^11.11.0":
2284 version: 11.11.0 2293 version: 11.11.0
2285 resolution: "@emotion/babel-plugin@npm:11.11.0" 2294 resolution: "@emotion/babel-plugin@npm:11.11.0"
@@ -2740,6 +2749,181 @@ __metadata:
2740 languageName: node 2749 languageName: node
2741 linkType: hard 2750 linkType: hard
2742 2751
2752"@img/sharp-darwin-arm64@npm:0.33.3":
2753 version: 0.33.3
2754 resolution: "@img/sharp-darwin-arm64@npm:0.33.3"
2755 dependencies:
2756 "@img/sharp-libvips-darwin-arm64": "npm:1.0.2"
2757 dependenciesMeta:
2758 "@img/sharp-libvips-darwin-arm64":
2759 optional: true
2760 conditions: os=darwin & cpu=arm64
2761 languageName: node
2762 linkType: hard
2763
2764"@img/sharp-darwin-x64@npm:0.33.3":
2765 version: 0.33.3
2766 resolution: "@img/sharp-darwin-x64@npm:0.33.3"
2767 dependencies:
2768 "@img/sharp-libvips-darwin-x64": "npm:1.0.2"
2769 dependenciesMeta:
2770 "@img/sharp-libvips-darwin-x64":
2771 optional: true
2772 conditions: os=darwin & cpu=x64
2773 languageName: node
2774 linkType: hard
2775
2776"@img/sharp-libvips-darwin-arm64@npm:1.0.2":
2777 version: 1.0.2
2778 resolution: "@img/sharp-libvips-darwin-arm64@npm:1.0.2"
2779 conditions: os=darwin & cpu=arm64
2780 languageName: node
2781 linkType: hard
2782
2783"@img/sharp-libvips-darwin-x64@npm:1.0.2":
2784 version: 1.0.2
2785 resolution: "@img/sharp-libvips-darwin-x64@npm:1.0.2"
2786 conditions: os=darwin & cpu=x64
2787 languageName: node
2788 linkType: hard
2789
2790"@img/sharp-libvips-linux-arm64@npm:1.0.2":
2791 version: 1.0.2
2792 resolution: "@img/sharp-libvips-linux-arm64@npm:1.0.2"
2793 conditions: os=linux & cpu=arm64 & libc=glibc
2794 languageName: node
2795 linkType: hard
2796
2797"@img/sharp-libvips-linux-arm@npm:1.0.2":
2798 version: 1.0.2
2799 resolution: "@img/sharp-libvips-linux-arm@npm:1.0.2"
2800 conditions: os=linux & cpu=arm & libc=glibc
2801 languageName: node
2802 linkType: hard
2803
2804"@img/sharp-libvips-linux-s390x@npm:1.0.2":
2805 version: 1.0.2
2806 resolution: "@img/sharp-libvips-linux-s390x@npm:1.0.2"
2807 conditions: os=linux & cpu=s390x & libc=glibc
2808 languageName: node
2809 linkType: hard
2810
2811"@img/sharp-libvips-linux-x64@npm:1.0.2":
2812 version: 1.0.2
2813 resolution: "@img/sharp-libvips-linux-x64@npm:1.0.2"
2814 conditions: os=linux & cpu=x64 & libc=glibc
2815 languageName: node
2816 linkType: hard
2817
2818"@img/sharp-libvips-linuxmusl-arm64@npm:1.0.2":
2819 version: 1.0.2
2820 resolution: "@img/sharp-libvips-linuxmusl-arm64@npm:1.0.2"
2821 conditions: os=linux & cpu=arm64 & libc=musl
2822 languageName: node
2823 linkType: hard
2824
2825"@img/sharp-libvips-linuxmusl-x64@npm:1.0.2":
2826 version: 1.0.2
2827 resolution: "@img/sharp-libvips-linuxmusl-x64@npm:1.0.2"
2828 conditions: os=linux & cpu=x64 & libc=musl
2829 languageName: node
2830 linkType: hard
2831
2832"@img/sharp-linux-arm64@npm:0.33.3":
2833 version: 0.33.3
2834 resolution: "@img/sharp-linux-arm64@npm:0.33.3"
2835 dependencies:
2836 "@img/sharp-libvips-linux-arm64": "npm:1.0.2"
2837 dependenciesMeta:
2838 "@img/sharp-libvips-linux-arm64":
2839 optional: true
2840 conditions: os=linux & cpu=arm64 & libc=glibc
2841 languageName: node
2842 linkType: hard
2843
2844"@img/sharp-linux-arm@npm:0.33.3":
2845 version: 0.33.3
2846 resolution: "@img/sharp-linux-arm@npm:0.33.3"
2847 dependencies:
2848 "@img/sharp-libvips-linux-arm": "npm:1.0.2"
2849 dependenciesMeta:
2850 "@img/sharp-libvips-linux-arm":
2851 optional: true
2852 conditions: os=linux & cpu=arm & libc=glibc
2853 languageName: node
2854 linkType: hard
2855
2856"@img/sharp-linux-s390x@npm:0.33.3":
2857 version: 0.33.3
2858 resolution: "@img/sharp-linux-s390x@npm:0.33.3"
2859 dependencies:
2860 "@img/sharp-libvips-linux-s390x": "npm:1.0.2"
2861 dependenciesMeta:
2862 "@img/sharp-libvips-linux-s390x":
2863 optional: true
2864 conditions: os=linux & cpu=s390x & libc=glibc
2865 languageName: node
2866 linkType: hard
2867
2868"@img/sharp-linux-x64@npm:0.33.3":
2869 version: 0.33.3
2870 resolution: "@img/sharp-linux-x64@npm:0.33.3"
2871 dependencies:
2872 "@img/sharp-libvips-linux-x64": "npm:1.0.2"
2873 dependenciesMeta:
2874 "@img/sharp-libvips-linux-x64":
2875 optional: true
2876 conditions: os=linux & cpu=x64 & libc=glibc
2877 languageName: node
2878 linkType: hard
2879
2880"@img/sharp-linuxmusl-arm64@npm:0.33.3":
2881 version: 0.33.3
2882 resolution: "@img/sharp-linuxmusl-arm64@npm:0.33.3"
2883 dependencies:
2884 "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.2"
2885 dependenciesMeta:
2886 "@img/sharp-libvips-linuxmusl-arm64":
2887 optional: true
2888 conditions: os=linux & cpu=arm64 & libc=musl
2889 languageName: node
2890 linkType: hard
2891
2892"@img/sharp-linuxmusl-x64@npm:0.33.3":
2893 version: 0.33.3
2894 resolution: "@img/sharp-linuxmusl-x64@npm:0.33.3"
2895 dependencies:
2896 "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.2"
2897 dependenciesMeta:
2898 "@img/sharp-libvips-linuxmusl-x64":
2899 optional: true
2900 conditions: os=linux & cpu=x64 & libc=musl
2901 languageName: node
2902 linkType: hard
2903
2904"@img/sharp-wasm32@npm:0.33.3":
2905 version: 0.33.3
2906 resolution: "@img/sharp-wasm32@npm:0.33.3"
2907 dependencies:
2908 "@emnapi/runtime": "npm:^1.1.0"
2909 conditions: cpu=wasm32
2910 languageName: node
2911 linkType: hard
2912
2913"@img/sharp-win32-ia32@npm:0.33.3":
2914 version: 0.33.3
2915 resolution: "@img/sharp-win32-ia32@npm:0.33.3"
2916 conditions: os=win32 & cpu=ia32
2917 languageName: node
2918 linkType: hard
2919
2920"@img/sharp-win32-x64@npm:0.33.3":
2921 version: 0.33.3
2922 resolution: "@img/sharp-win32-x64@npm:0.33.3"
2923 conditions: os=win32 & cpu=x64
2924 languageName: node
2925 linkType: hard
2926
2743"@isaacs/cliui@npm:^8.0.2": 2927"@isaacs/cliui@npm:^8.0.2":
2744 version: 8.0.2 2928 version: 8.0.2
2745 resolution: "@isaacs/cliui@npm:8.0.2" 2929 resolution: "@isaacs/cliui@npm:8.0.2"
@@ -3237,6 +3421,8 @@ __metadata:
3237 react: "npm:^18.2.0" 3421 react: "npm:^18.2.0"
3238 react-dom: "npm:^18.2.0" 3422 react-dom: "npm:^18.2.0"
3239 remark-smartypants: "npm:^2.1.0" 3423 remark-smartypants: "npm:^2.1.0"
3424 responsive-loader: "npm:^3.1.2"
3425 sharp: "npm:^0.33.3"
3240 swc-loader: "npm:^0.2.6" 3426 swc-loader: "npm:^0.2.6"
3241 terser-webpack-plugin: "npm:^5.3.10" 3427 terser-webpack-plugin: "npm:^5.3.10"
3242 unified: "npm:^11.0.4" 3428 unified: "npm:^11.0.4"
@@ -4582,6 +4768,15 @@ __metadata:
4582 languageName: node 4768 languageName: node
4583 linkType: hard 4769 linkType: hard
4584 4770
4771"@types/node@npm:^18.11.9":
4772 version: 18.19.31
4773 resolution: "@types/node@npm:18.19.31"
4774 dependencies:
4775 undici-types: "npm:~5.26.4"
4776 checksum: 10c0/bfebae8389220c0188492c82eaf328f4ba15e6e9b4abee33d6bf36d3b13f188c2f53eb695d427feb882fff09834f467405e2ed9be6aeb6ad4705509822d2ea08
4777 languageName: node
4778 linkType: hard
4779
4585"@types/parse-json@npm:^4.0.0": 4780"@types/parse-json@npm:^4.0.0":
4586 version: 4.0.2 4781 version: 4.0.2
4587 resolution: "@types/parse-json@npm:4.0.2" 4782 resolution: "@types/parse-json@npm:4.0.2"
@@ -6316,13 +6511,23 @@ __metadata:
6316 languageName: node 6511 languageName: node
6317 linkType: hard 6512 linkType: hard
6318 6513
6319"color-name@npm:~1.1.4": 6514"color-name@npm:^1.0.0, color-name@npm:~1.1.4":
6320 version: 1.1.4 6515 version: 1.1.4
6321 resolution: "color-name@npm:1.1.4" 6516 resolution: "color-name@npm:1.1.4"
6322 checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95 6517 checksum: 10c0/a1a3f914156960902f46f7f56bc62effc6c94e84b2cae157a526b1c1f74b677a47ec602bf68a61abfa2b42d15b7c5651c6dbe72a43af720bc588dff885b10f95
6323 languageName: node 6518 languageName: node
6324 linkType: hard 6519 linkType: hard
6325 6520
6521"color-string@npm:^1.9.0":
6522 version: 1.9.1
6523 resolution: "color-string@npm:1.9.1"
6524 dependencies:
6525 color-name: "npm:^1.0.0"
6526 simple-swizzle: "npm:^0.2.2"
6527 checksum: 10c0/b0bfd74c03b1f837f543898b512f5ea353f71630ccdd0d66f83028d1f0924a7d4272deb278b9aef376cacf1289b522ac3fb175e99895283645a2dc3a33af2404
6528 languageName: node
6529 linkType: hard
6530
6326"color-support@npm:^1.1.3": 6531"color-support@npm:^1.1.3":
6327 version: 1.1.3 6532 version: 1.1.3
6328 resolution: "color-support@npm:1.1.3" 6533 resolution: "color-support@npm:1.1.3"
@@ -6332,6 +6537,16 @@ __metadata:
6332 languageName: node 6537 languageName: node
6333 linkType: hard 6538 linkType: hard
6334 6539
6540"color@npm:^4.2.3":
6541 version: 4.2.3
6542 resolution: "color@npm:4.2.3"
6543 dependencies:
6544 color-convert: "npm:^2.0.1"
6545 color-string: "npm:^1.9.0"
6546 checksum: 10c0/7fbe7cfb811054c808349de19fb380252e5e34e61d7d168ec3353e9e9aacb1802674bddc657682e4e9730c2786592a4de6f8283e7e0d3870b829bb0b7b2f6118
6547 languageName: node
6548 linkType: hard
6549
6335"colord@npm:^2.9.1": 6550"colord@npm:^2.9.1":
6336 version: 2.9.3 6551 version: 2.9.3
6337 resolution: "colord@npm:2.9.3" 6552 resolution: "colord@npm:2.9.3"
@@ -6409,6 +6624,13 @@ __metadata:
6409 languageName: node 6624 languageName: node
6410 linkType: hard 6625 linkType: hard
6411 6626
6627"commondir@npm:^1.0.1":
6628 version: 1.0.1
6629 resolution: "commondir@npm:1.0.1"
6630 checksum: 10c0/33a124960e471c25ee19280c9ce31ccc19574b566dc514fe4f4ca4c34fa8b0b57cf437671f5de380e11353ea9426213fca17687dd2ef03134fea2dbc53809fd6
6631 languageName: node
6632 linkType: hard
6633
6412"compressible@npm:~2.0.16": 6634"compressible@npm:~2.0.16":
6413 version: 2.0.18 6635 version: 2.0.18
6414 resolution: "compressible@npm:2.0.18" 6636 resolution: "compressible@npm:2.0.18"
@@ -7489,6 +7711,13 @@ __metadata:
7489 languageName: node 7711 languageName: node
7490 linkType: hard 7712 linkType: hard
7491 7713
7714"detect-libc@npm:^2.0.3":
7715 version: 2.0.3
7716 resolution: "detect-libc@npm:2.0.3"
7717 checksum: 10c0/88095bda8f90220c95f162bf92cad70bd0e424913e655c20578600e35b91edc261af27531cf160a331e185c0ced93944bc7e09939143225f56312d7fd800fdb7
7718 languageName: node
7719 linkType: hard
7720
7492"detect-node@npm:^2.0.4": 7721"detect-node@npm:^2.0.4":
7493 version: 2.1.0 7722 version: 2.1.0
7494 resolution: "detect-node@npm:2.1.0" 7723 resolution: "detect-node@npm:2.1.0"
@@ -8790,6 +9019,17 @@ __metadata:
8790 languageName: node 9019 languageName: node
8791 linkType: hard 9020 linkType: hard
8792 9021
9022"find-cache-dir@npm:^3.3.2":
9023 version: 3.3.2
9024 resolution: "find-cache-dir@npm:3.3.2"
9025 dependencies:
9026 commondir: "npm:^1.0.1"
9027 make-dir: "npm:^3.0.2"
9028 pkg-dir: "npm:^4.1.0"
9029 checksum: 10c0/92747cda42bff47a0266b06014610981cfbb71f55d60f2c8216bc3108c83d9745507fb0b14ecf6ab71112bed29cd6fb1a137ee7436179ea36e11287e3159e587
9030 languageName: node
9031 linkType: hard
9032
8793"find-cache-dir@npm:^4.0.0": 9033"find-cache-dir@npm:^4.0.0":
8794 version: 4.0.0 9034 version: 4.0.0
8795 resolution: "find-cache-dir@npm:4.0.0" 9035 resolution: "find-cache-dir@npm:4.0.0"
@@ -8816,6 +9056,16 @@ __metadata:
8816 languageName: node 9056 languageName: node
8817 linkType: hard 9057 linkType: hard
8818 9058
9059"find-up@npm:^4.0.0":
9060 version: 4.1.0
9061 resolution: "find-up@npm:4.1.0"
9062 dependencies:
9063 locate-path: "npm:^5.0.0"
9064 path-exists: "npm:^4.0.0"
9065 checksum: 10c0/0406ee89ebeefa2d507feb07ec366bebd8a6167ae74aa4e34fb4c4abd06cf782a3ce26ae4194d70706f72182841733f00551c209fe575cb00bd92104056e78c1
9066 languageName: node
9067 linkType: hard
9068
8819"find-up@npm:^5.0.0": 9069"find-up@npm:^5.0.0":
8820 version: 5.0.0 9070 version: 5.0.0
8821 resolution: "find-up@npm:5.0.0" 9071 resolution: "find-up@npm:5.0.0"
@@ -10106,6 +10356,13 @@ __metadata:
10106 languageName: node 10356 languageName: node
10107 linkType: hard 10357 linkType: hard
10108 10358
10359"is-arrayish@npm:^0.3.1":
10360 version: 0.3.2
10361 resolution: "is-arrayish@npm:0.3.2"
10362 checksum: 10c0/f59b43dc1d129edb6f0e282595e56477f98c40278a2acdc8b0a5c57097c9eff8fe55470493df5775478cf32a4dc8eaf6d3a749f07ceee5bc263a78b2434f6a54
10363 languageName: node
10364 linkType: hard
10365
10109"is-async-function@npm:^2.0.0": 10366"is-async-function@npm:^2.0.0":
10110 version: 2.0.0 10367 version: 2.0.0
10111 resolution: "is-async-function@npm:2.0.0" 10368 resolution: "is-async-function@npm:2.0.0"
@@ -10783,7 +11040,7 @@ __metadata:
10783 languageName: node 11040 languageName: node
10784 linkType: hard 11041 linkType: hard
10785 11042
10786"json5@npm:^2.1.2, json5@npm:^2.2.0, json5@npm:^2.2.3": 11043"json5@npm:^2.1.2, json5@npm:^2.2.0, json5@npm:^2.2.1, json5@npm:^2.2.3":
10787 version: 2.2.3 11044 version: 2.2.3
10788 resolution: "json5@npm:2.2.3" 11045 resolution: "json5@npm:2.2.3"
10789 bin: 11046 bin:
@@ -10956,7 +11213,7 @@ __metadata:
10956 languageName: node 11213 languageName: node
10957 linkType: hard 11214 linkType: hard
10958 11215
10959"loader-utils@npm:^3.2.0": 11216"loader-utils@npm:^3.2.0, loader-utils@npm:^3.2.1":
10960 version: 3.2.1 11217 version: 3.2.1
10961 resolution: "loader-utils@npm:3.2.1" 11218 resolution: "loader-utils@npm:3.2.1"
10962 checksum: 10c0/d3e1f217d160e8e894a0385a33500d4ce14065e8ffb250f5a81ae65bc2c3baa50625ec34182ba4417b46b4ac6725aed64429e1104d6401e074af2aa1dd018394 11219 checksum: 10c0/d3e1f217d160e8e894a0385a33500d4ce14065e8ffb250f5a81ae65bc2c3baa50625ec34182ba4417b46b4ac6725aed64429e1104d6401e074af2aa1dd018394
@@ -10973,6 +11230,15 @@ __metadata:
10973 languageName: node 11230 languageName: node
10974 linkType: hard 11231 linkType: hard
10975 11232
11233"locate-path@npm:^5.0.0":
11234 version: 5.0.0
11235 resolution: "locate-path@npm:5.0.0"
11236 dependencies:
11237 p-locate: "npm:^4.1.0"
11238 checksum: 10c0/33a1c5247e87e022f9713e6213a744557a3e9ec32c5d0b5efb10aa3a38177615bf90221a5592674857039c1a0fd2063b82f285702d37b792d973e9e72ace6c59
11239 languageName: node
11240 linkType: hard
11241
10976"locate-path@npm:^6.0.0": 11242"locate-path@npm:^6.0.0":
10977 version: 6.0.0 11243 version: 6.0.0
10978 resolution: "locate-path@npm:6.0.0" 11244 resolution: "locate-path@npm:6.0.0"
@@ -11129,6 +11395,15 @@ __metadata:
11129 languageName: node 11395 languageName: node
11130 linkType: hard 11396 linkType: hard
11131 11397
11398"make-dir@npm:^3.0.2, make-dir@npm:^3.1.0":
11399 version: 3.1.0
11400 resolution: "make-dir@npm:3.1.0"
11401 dependencies:
11402 semver: "npm:^6.0.0"
11403 checksum: 10c0/56aaafefc49c2dfef02c5c95f9b196c4eb6988040cf2c712185c7fe5c99b4091591a7fc4d4eafaaefa70ff763a26f6ab8c3ff60b9e75ea19876f49b18667ecaa
11404 languageName: node
11405 linkType: hard
11406
11132"make-fetch-happen@npm:^11.0.3": 11407"make-fetch-happen@npm:^11.0.3":
11133 version: 11.1.1 11408 version: 11.1.1
11134 resolution: "make-fetch-happen@npm:11.1.1" 11409 resolution: "make-fetch-happen@npm:11.1.1"
@@ -12639,7 +12914,7 @@ __metadata:
12639 languageName: node 12914 languageName: node
12640 linkType: hard 12915 linkType: hard
12641 12916
12642"p-limit@npm:^2.0.0": 12917"p-limit@npm:^2.0.0, p-limit@npm:^2.2.0":
12643 version: 2.3.0 12918 version: 2.3.0
12644 resolution: "p-limit@npm:2.3.0" 12919 resolution: "p-limit@npm:2.3.0"
12645 dependencies: 12920 dependencies:
@@ -12675,6 +12950,15 @@ __metadata:
12675 languageName: node 12950 languageName: node
12676 linkType: hard 12951 linkType: hard
12677 12952
12953"p-locate@npm:^4.1.0":
12954 version: 4.1.0
12955 resolution: "p-locate@npm:4.1.0"
12956 dependencies:
12957 p-limit: "npm:^2.2.0"
12958 checksum: 10c0/1b476ad69ad7f6059744f343b26d51ce091508935c1dbb80c4e0a2f397ffce0ca3a1f9f5cd3c7ce19d7929a09719d5c65fe70d8ee289c3f267cd36f2881813e9
12959 languageName: node
12960 linkType: hard
12961
12678"p-locate@npm:^5.0.0": 12962"p-locate@npm:^5.0.0":
12679 version: 5.0.0 12963 version: 5.0.0
12680 resolution: "p-locate@npm:5.0.0" 12964 resolution: "p-locate@npm:5.0.0"
@@ -12953,6 +13237,15 @@ __metadata:
12953 languageName: node 13237 languageName: node
12954 linkType: hard 13238 linkType: hard
12955 13239
13240"pkg-dir@npm:^4.1.0":
13241 version: 4.2.0
13242 resolution: "pkg-dir@npm:4.2.0"
13243 dependencies:
13244 find-up: "npm:^4.0.0"
13245 checksum: 10c0/c56bda7769e04907a88423feb320babaed0711af8c436ce3e56763ab1021ba107c7b0cafb11cde7529f669cfc22bffcaebffb573645cbd63842ea9fb17cd7728
13246 languageName: node
13247 linkType: hard
13248
12956"pkg-dir@npm:^7.0.0": 13249"pkg-dir@npm:^7.0.0":
12957 version: 7.0.0 13250 version: 7.0.0
12958 resolution: "pkg-dir@npm:7.0.0" 13251 resolution: "pkg-dir@npm:7.0.0"
@@ -14331,6 +14624,27 @@ __metadata:
14331 languageName: node 14624 languageName: node
14332 linkType: hard 14625 linkType: hard
14333 14626
14627"responsive-loader@npm:^3.1.2":
14628 version: 3.1.2
14629 resolution: "responsive-loader@npm:3.1.2"
14630 dependencies:
14631 "@types/node": "npm:^18.11.9"
14632 find-cache-dir: "npm:^3.3.2"
14633 json5: "npm:^2.2.1"
14634 loader-utils: "npm:^3.2.1"
14635 make-dir: "npm:^3.1.0"
14636 schema-utils: "npm:^4.0.0"
14637 peerDependencies:
14638 webpack: ^5.73.0
14639 peerDependenciesMeta:
14640 jimp:
14641 optional: true
14642 sharp:
14643 optional: true
14644 checksum: 10c0/c93b200bb51fe2968ee8092b4817db55dd55f2306d1d75fa66aa6cd2dbddf9c7f394528f9182acbc3a37489fed9b5d743b51a5275c88d31fb665195cf0f5adaf
14645 languageName: node
14646 linkType: hard
14647
14334"retext-latin@npm:^3.0.0": 14648"retext-latin@npm:^3.0.0":
14335 version: 3.1.0 14649 version: 3.1.0
14336 resolution: "retext-latin@npm:3.1.0" 14650 resolution: "retext-latin@npm:3.1.0"
@@ -14679,7 +14993,7 @@ __metadata:
14679 languageName: node 14993 languageName: node
14680 linkType: hard 14994 linkType: hard
14681 14995
14682"semver@npm:^6.3.0, semver@npm:^6.3.1": 14996"semver@npm:^6.0.0, semver@npm:^6.3.0, semver@npm:^6.3.1":
14683 version: 6.3.1 14997 version: 6.3.1
14684 resolution: "semver@npm:6.3.1" 14998 resolution: "semver@npm:6.3.1"
14685 bin: 14999 bin:
@@ -14844,6 +15158,75 @@ __metadata:
14844 languageName: node 15158 languageName: node
14845 linkType: hard 15159 linkType: hard
14846 15160
15161"sharp@npm:^0.33.3":
15162 version: 0.33.3
15163 resolution: "sharp@npm:0.33.3"
15164 dependencies:
15165 "@img/sharp-darwin-arm64": "npm:0.33.3"
15166 "@img/sharp-darwin-x64": "npm:0.33.3"
15167 "@img/sharp-libvips-darwin-arm64": "npm:1.0.2"
15168 "@img/sharp-libvips-darwin-x64": "npm:1.0.2"
15169 "@img/sharp-libvips-linux-arm": "npm:1.0.2"
15170 "@img/sharp-libvips-linux-arm64": "npm:1.0.2"
15171 "@img/sharp-libvips-linux-s390x": "npm:1.0.2"
15172 "@img/sharp-libvips-linux-x64": "npm:1.0.2"
15173 "@img/sharp-libvips-linuxmusl-arm64": "npm:1.0.2"
15174 "@img/sharp-libvips-linuxmusl-x64": "npm:1.0.2"
15175 "@img/sharp-linux-arm": "npm:0.33.3"
15176 "@img/sharp-linux-arm64": "npm:0.33.3"
15177 "@img/sharp-linux-s390x": "npm:0.33.3"
15178 "@img/sharp-linux-x64": "npm:0.33.3"
15179 "@img/sharp-linuxmusl-arm64": "npm:0.33.3"
15180 "@img/sharp-linuxmusl-x64": "npm:0.33.3"
15181 "@img/sharp-wasm32": "npm:0.33.3"
15182 "@img/sharp-win32-ia32": "npm:0.33.3"
15183 "@img/sharp-win32-x64": "npm:0.33.3"
15184 color: "npm:^4.2.3"
15185 detect-libc: "npm:^2.0.3"
15186 semver: "npm:^7.6.0"
15187 dependenciesMeta:
15188 "@img/sharp-darwin-arm64":
15189 optional: true
15190 "@img/sharp-darwin-x64":
15191 optional: true
15192 "@img/sharp-libvips-darwin-arm64":
15193 optional: true
15194 "@img/sharp-libvips-darwin-x64":
15195 optional: true
15196 "@img/sharp-libvips-linux-arm":
15197 optional: true
15198 "@img/sharp-libvips-linux-arm64":
15199 optional: true
15200 "@img/sharp-libvips-linux-s390x":
15201 optional: true
15202 "@img/sharp-libvips-linux-x64":
15203 optional: true
15204 "@img/sharp-libvips-linuxmusl-arm64":
15205 optional: true
15206 "@img/sharp-libvips-linuxmusl-x64":
15207 optional: true
15208 "@img/sharp-linux-arm":
15209 optional: true
15210 "@img/sharp-linux-arm64":
15211 optional: true
15212 "@img/sharp-linux-s390x":
15213 optional: true
15214 "@img/sharp-linux-x64":
15215 optional: true
15216 "@img/sharp-linuxmusl-arm64":
15217 optional: true
15218 "@img/sharp-linuxmusl-x64":
15219 optional: true
15220 "@img/sharp-wasm32":
15221 optional: true
15222 "@img/sharp-win32-ia32":
15223 optional: true
15224 "@img/sharp-win32-x64":
15225 optional: true
15226 checksum: 10c0/12f5203426595b4e64c807162a6d52358b591d25fbb414a51fe38861584759fba38485be951ed98d15be3dfe21f2def5336f78ca35bf8bbd22d88cc78ca03f2a
15227 languageName: node
15228 linkType: hard
15229
14847"shebang-command@npm:^2.0.0": 15230"shebang-command@npm:^2.0.0":
14848 version: 2.0.0 15231 version: 2.0.0
14849 resolution: "shebang-command@npm:2.0.0" 15232 resolution: "shebang-command@npm:2.0.0"
@@ -14906,6 +15289,15 @@ __metadata:
14906 languageName: node 15289 languageName: node
14907 linkType: hard 15290 linkType: hard
14908 15291
15292"simple-swizzle@npm:^0.2.2":
15293 version: 0.2.2
15294 resolution: "simple-swizzle@npm:0.2.2"
15295 dependencies:
15296 is-arrayish: "npm:^0.3.1"
15297 checksum: 10c0/df5e4662a8c750bdba69af4e8263c5d96fe4cd0f9fe4bdfa3cbdeb45d2e869dff640beaaeb1ef0e99db4d8d2ec92f85508c269f50c972174851bc1ae5bd64308
15298 languageName: node
15299 linkType: hard
15300
14909"sirv@npm:^2.0.3": 15301"sirv@npm:^2.0.3":
14910 version: 2.0.4 15302 version: 2.0.4
14911 resolution: "sirv@npm:2.0.4" 15303 resolution: "sirv@npm:2.0.4"
@@ -15690,7 +16082,7 @@ __metadata:
15690 languageName: node 16082 languageName: node
15691 linkType: hard 16083 linkType: hard
15692 16084
15693"tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.6.0, tslib@npm:^2.6.2": 16085"tslib@npm:^2.0.1, tslib@npm:^2.0.3, tslib@npm:^2.4.0, tslib@npm:^2.6.0, tslib@npm:^2.6.2":
15694 version: 2.6.2 16086 version: 2.6.2
15695 resolution: "tslib@npm:2.6.2" 16087 resolution: "tslib@npm:2.6.2"
15696 checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb 16088 checksum: 10c0/e03a8a4271152c8b26604ed45535954c0a45296e32445b4b87f8a5abdb2421f40b59b4ca437c4346af0f28179780d604094eb64546bee2019d903d01c6c19bdb