add script to remove stale images (#1016)

Fixes #194
This commit is contained in:
Kevin J. Sung 2024-03-12 10:13:54 -04:00 committed by GitHub
parent 0089cddebf
commit 6949c628be
35 changed files with 55 additions and 173 deletions

View File

@ -13,6 +13,7 @@
"check:external-links": "node -r esbuild-register scripts/commands/checkExternalLinks.ts",
"check:pages-render": "node -r esbuild-register scripts/commands/checkPagesRender.ts",
"check:orphan-pages": "node -r esbuild-register scripts/commands/checkOrphanPages.ts",
"check:stale-images": "node -r esbuild-register scripts/commands/checkStaleImages.ts",
"fmt": "prettier --write .",
"test": "jest",
"typecheck": "tsc",

Binary file not shown.

Before

Width:  |  Height:  |  Size: 56 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 6.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 11 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 14 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 62 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 29 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 78 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 7.7 KiB

View File

@ -1,69 +0,0 @@
<svg width="357" height="204" viewBox="0 0 357 204" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_1_2)">
<path d="M357 0H0V204H357V0Z" fill="#F4F4F4"/>
<path d="M0 153.791C3.77581 153.791 268.24 153.791 400 153.791" stroke="#DDE1E6" stroke-width="2"/>
<path d="M0 103C3.77581 103 268.24 103 400 103" stroke="#DDE1E6" stroke-width="2"/>
<path d="M0 49C3.77581 49 268.24 49 400 49" stroke="#DDE1E6" stroke-width="2"/>
<path d="M53.7578 0C53.7578 1.91949 53.7578 136.364 53.7578 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M23 0C23 1.91949 23 136.364 23 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M85 0C85 1.91949 85 136.364 85 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M118.692 0C118.692 1.91949 118.692 136.364 118.692 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M149.45 0C149.45 1.91949 149.45 136.364 149.45 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M180.209 0C180.209 1.91949 180.209 136.364 180.209 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M212 0C212 1.91949 212 136.364 212 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M241.726 0C241.726 1.91949 241.726 136.364 241.726 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M273 0C273 1.91949 273 136.364 273 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M303.242 0C303.242 1.91949 303.242 136.364 303.242 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M303.242 0C303.242 1.91949 303.242 136.364 303.242 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M334 0C334 1.91949 334 136.364 334 203.346" stroke="#DDE1E6" stroke-width="2"/>
<mask id="mask0_1_2" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="66" y="48" width="38" height="82">
<path fill-rule="evenodd" clip-rule="evenodd" d="M73 50H83.8397V98H66V106.571H83.8397V128.143H72.8572V129.857H96.8572V128.143H85.8746V106.571H103.714V98H85.8746V50H97V48H73V50Z" fill="white"/>
</mask>
<g mask="url(#mask0_1_2)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M73 50H83.8397V98H66V106.571H83.8397V128.143H72.8572V129.857H96.8572V128.143H85.8746V106.571H103.714V98H85.8746V50H97V48H73V50Z" fill="#F4F4F4"/>
<path d="M83.8397 50H85.8397V48H83.8397V50ZM73 50H71V52H73V50ZM83.8397 98V100H85.8397V98H83.8397ZM66 98V96H64V98H66ZM66 106.571H64V108.571H66V106.571ZM83.8397 106.571H85.8397V104.571H83.8397V106.571ZM83.8397 128.143V130.143H85.8397V128.143H83.8397ZM72.8572 128.143V126.143H70.8572V128.143H72.8572ZM72.8572 129.857H70.8572V131.857H72.8572V129.857ZM96.8572 129.857V131.857H98.8572V129.857H96.8572ZM96.8572 128.143H98.8572V126.143H96.8572V128.143ZM85.8746 128.143H83.8746V130.143H85.8746V128.143ZM85.8746 106.571V104.571H83.8746V106.571H85.8746ZM103.714 106.571V108.571H105.714V106.571H103.714ZM103.714 98H105.714V96H103.714V98ZM85.8746 98H83.8746V100H85.8746V98ZM85.8746 50V48H83.8746V50H85.8746ZM97 50V52H99V50H97ZM97 48H99V46H97V48ZM73 48V46H71V48H73ZM83.8397 48H73V52H83.8397V48ZM85.8397 98V50H81.8397V98H85.8397ZM66 100H83.8397V96H66V100ZM68 106.571V98H64V106.571H68ZM83.8397 104.571H66V108.571H83.8397V104.571ZM85.8397 128.143V106.571H81.8397V128.143H85.8397ZM72.8572 130.143H83.8397V126.143H72.8572V130.143ZM74.8572 129.857V128.143H70.8572V129.857H74.8572ZM96.8572 127.857H72.8572V131.857H96.8572V127.857ZM94.8572 128.143V129.857H98.8572V128.143H94.8572ZM85.8746 130.143H96.8572V126.143H85.8746V130.143ZM83.8746 106.571V128.143H87.8746V106.571H83.8746ZM103.714 104.571H85.8746V108.571H103.714V104.571ZM101.714 98V106.571H105.714V98H101.714ZM85.8746 100H103.714V96H85.8746V100ZM83.8746 50V98H87.8746V50H83.8746ZM97 48H85.8746V52H97V48ZM95 48V50H99V48H95ZM73 50H97V46H73V50ZM75 50V48H71V50H75Z" fill="url(#paint0_linear_1_2)"/>
</g>
<mask id="mask1_1_2" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="130" y="22" width="38" height="133">
<path fill-rule="evenodd" clip-rule="evenodd" d="M137.357 24.5H148.357V44H130V52.5714H148.357V152.786H137.357V154.786H161.357V152.786H150.357V52.5714H167.714V44H150.357V24.5H161.357V22.5H137.357V24.5Z" fill="white"/>
</mask>
<g mask="url(#mask1_1_2)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M137.357 24.5H148.357V44H130V52.5714H148.357V152.786H137.357V154.786H161.357V152.786H150.357V52.5714H167.714V44H150.357V24.5H161.357V22.5H137.357V24.5Z" fill="#F4F4F4"/>
<path d="M148.357 24.5H150.357V22.5H148.357V24.5ZM137.357 24.5H135.357V26.5H137.357V24.5ZM148.357 44V46H150.357V44H148.357ZM130 44V42H128V44H130ZM130 52.5714H128V54.5714H130V52.5714ZM148.357 52.5714H150.357V50.5714H148.357V52.5714ZM148.357 152.786V154.786H150.357V152.786H148.357ZM137.357 152.786V150.786H135.357V152.786H137.357ZM137.357 154.786H135.357V156.786H137.357V154.786ZM161.357 154.786V156.786H163.357V154.786H161.357ZM161.357 152.786H163.357V150.786H161.357V152.786ZM150.357 152.786H148.357V154.786H150.357V152.786ZM150.357 52.5714V50.5714H148.357V52.5714H150.357ZM167.714 52.5714V54.5714H169.714V52.5714H167.714ZM167.714 44H169.714V42H167.714V44ZM150.357 44H148.357V46H150.357V44ZM150.357 24.5V22.5H148.357V24.5H150.357ZM161.357 24.5V26.5H163.357V24.5H161.357ZM161.357 22.5H163.357V20.5H161.357V22.5ZM137.357 22.5V20.5H135.357V22.5H137.357ZM148.357 22.5H137.357V26.5H148.357V22.5ZM150.357 44V24.5H146.357V44H150.357ZM130 46H148.357V42H130V46ZM132 52.5714V44H128V52.5714H132ZM148.357 50.5714H130V54.5714H148.357V50.5714ZM150.357 152.786V52.5714H146.357V152.786H150.357ZM137.357 154.786H148.357V150.786H137.357V154.786ZM139.357 154.786V152.786H135.357V154.786H139.357ZM161.357 152.786H137.357V156.786H161.357V152.786ZM159.357 152.786V154.786H163.357V152.786H159.357ZM150.357 154.786H161.357V150.786H150.357V154.786ZM148.357 52.5714V152.786H152.357V52.5714H148.357ZM167.714 50.5714H150.357V54.5714H167.714V50.5714ZM165.714 44V52.5714H169.714V44H165.714ZM150.357 46H167.714V42H150.357V46ZM148.357 24.5V44H152.357V24.5H148.357ZM161.357 22.5H150.357V26.5H161.357V22.5ZM159.357 22.5V24.5H163.357V22.5H159.357ZM137.357 24.5H161.357V20.5H137.357V24.5ZM139.357 24.5V22.5H135.357V24.5H139.357Z" fill="url(#paint1_linear_1_2)"/>
</g>
<mask id="mask2_1_2" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="193" y="47" width="38" height="57">
<path fill-rule="evenodd" clip-rule="evenodd" d="M199.857 49.8571H211V71.1428H193V79.7143H211V102H199.857V104H223.857V102H213V79.7143H230.714V71.1428H213V49.8571H223.857V47.8571H199.857V49.8571Z" fill="white"/>
</mask>
<g mask="url(#mask2_1_2)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M199.857 49.8571H211V71.1428H193V79.7143H211V102H199.857V104H223.857V102H213V79.7143H230.714V71.1428H213V49.8571H223.857V47.8571H199.857V49.8571Z" fill="#F4F4F4"/>
<path d="M211 49.8571H213V47.8571H211V49.8571ZM199.857 49.8571H197.857V51.8571H199.857V49.8571ZM211 71.1428V73.1428H213V71.1428H211ZM193 71.1428V69.1428H191V71.1428H193ZM193 79.7143H191V81.7143H193V79.7143ZM211 79.7143H213V77.7143H211V79.7143ZM211 102V104H213V102H211ZM199.857 102V100H197.857V102H199.857ZM199.857 104H197.857V106H199.857V104ZM223.857 104V106H225.857V104H223.857ZM223.857 102H225.857V100H223.857V102ZM213 102H211V104H213V102ZM213 79.7143V77.7143H211V79.7143H213ZM230.714 79.7143V81.7143H232.714V79.7143H230.714ZM230.714 71.1428H232.714V69.1428H230.714V71.1428ZM213 71.1428H211V73.1428H213V71.1428ZM213 49.8571V47.8571H211V49.8571H213ZM223.857 49.8571V51.8571H225.857V49.8571H223.857ZM223.857 47.8571H225.857V45.8571H223.857V47.8571ZM199.857 47.8571V45.8571H197.857V47.8571H199.857ZM211 47.8571H199.857V51.8571H211V47.8571ZM213 71.1428V49.8571H209V71.1428H213ZM193 73.1428H211V69.1428H193V73.1428ZM195 79.7143V71.1428H191V79.7143H195ZM211 77.7143H193V81.7143H211V77.7143ZM213 102V79.7143H209V102H213ZM199.857 104H211V100H199.857V104ZM201.857 104V102H197.857V104H201.857ZM223.857 102H199.857V106H223.857V102ZM221.857 102V104H225.857V102H221.857ZM213 104H223.857V100H213V104ZM211 79.7143V102H215V79.7143H211ZM230.714 77.7143H213V81.7143H230.714V77.7143ZM228.714 71.1428V79.7143H232.714V71.1428H228.714ZM213 73.1428H230.714V69.1428H213V73.1428ZM211 49.8571V71.1428H215V49.8571H211ZM223.857 47.8571H213V51.8571H223.857V47.8571ZM221.857 47.8571V49.8571H225.857V47.8571H221.857ZM199.857 49.8571H223.857V45.8571H199.857V49.8571ZM201.857 49.8571V47.8571H197.857V49.8571H201.857Z" fill="url(#paint2_linear_1_2)" fill-opacity="0.910112"/>
</g>
<mask id="mask3_1_2" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="254" y="48" width="38" height="133">
<path fill-rule="evenodd" clip-rule="evenodd" d="M260.857 50H271.857V149H254V157.571H271.857V178.286H260.857V180.286H284.857V178.286H273.857V157.571H291.714V149H273.857V50H284.857V48H260.857V50Z" fill="white"/>
</mask>
<g mask="url(#mask3_1_2)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M260.857 50H271.857V149H254V157.571H271.857V178.286H260.857V180.286H284.857V178.286H273.857V157.571H291.714V149H273.857V50H284.857V48H260.857V50Z" fill="#F4F4F4"/>
<path d="M271.857 50H273.857V48H271.857V50ZM260.857 50H258.857V52H260.857V50ZM271.857 149V151H273.857V149H271.857ZM254 149V147H252V149H254ZM254 157.571H252V159.571H254V157.571ZM271.857 157.571H273.857V155.571H271.857V157.571ZM271.857 178.286V180.286H273.857V178.286H271.857ZM260.857 178.286V176.286H258.857V178.286H260.857ZM260.857 180.286H258.857V182.286H260.857V180.286ZM284.857 180.286V182.286H286.857V180.286H284.857ZM284.857 178.286H286.857V176.286H284.857V178.286ZM273.857 178.286H271.857V180.286H273.857V178.286ZM273.857 157.571V155.571H271.857V157.571H273.857ZM291.714 157.571V159.571H293.714V157.571H291.714ZM291.714 149H293.714V147H291.714V149ZM273.857 149H271.857V151H273.857V149ZM273.857 50V48H271.857V50H273.857ZM284.857 50V52H286.857V50H284.857ZM284.857 48H286.857V46H284.857V48ZM260.857 48V46H258.857V48H260.857ZM271.857 48H260.857V52H271.857V48ZM273.857 149V50H269.857V149H273.857ZM254 151H271.857V147H254V151ZM256 157.571V149H252V157.571H256ZM271.857 155.571H254V159.571H271.857V155.571ZM273.857 178.286V157.571H269.857V178.286H273.857ZM260.857 180.286H271.857V176.286H260.857V180.286ZM262.857 180.286V178.286H258.857V180.286H262.857ZM284.857 178.286H260.857V182.286H284.857V178.286ZM282.857 178.286V180.286H286.857V178.286H282.857ZM273.857 180.286H284.857V176.286H273.857V180.286ZM271.857 157.571V178.286H275.857V157.571H271.857ZM291.714 155.571H273.857V159.571H291.714V155.571ZM289.714 149V157.571H293.714V149H289.714ZM273.857 151H291.714V147H273.857V151ZM271.857 50V149H275.857V50H271.857ZM284.857 48H273.857V52H284.857V48ZM282.857 48V50H286.857V48H282.857ZM260.857 50H284.857V46H260.857V50ZM262.857 50V48H258.857V50H262.857Z" fill="url(#paint3_linear_1_2)"/>
</g>
</g>
<defs>
<linearGradient id="paint0_linear_1_2" x1="84.8571" y1="73.0426" x2="84.8571" y2="200.125" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F62FE"/>
<stop offset="1" stop-color="#0F62FE" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_1_2" x1="149.357" y1="74.0398" x2="149.357" y2="197.735" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F62FE"/>
<stop offset="1" stop-color="#0F62FE" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint2_linear_1_2" x1="211.857" y1="81.4285" x2="211.857" y2="190.286" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F62FE"/>
<stop offset="1" stop-color="#0F62FE" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint3_linear_1_2" x1="264.66" y1="96.1039" x2="264.66" y2="206.915" gradientUnits="userSpaceOnUse">
<stop stop-color="#0F62FE"/>
<stop offset="1" stop-color="#0F62FE" stop-opacity="0"/>
</linearGradient>
<clipPath id="clip0_1_2">
<rect width="357" height="204" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 11 KiB

View File

@ -1,55 +0,0 @@
<svg width="357" height="204" viewBox="0 0 357 204" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2_37)">
<path d="M0 0H357V204H0V0Z" fill="#161616"/>
<path d="M0 153.791H400M0 103H400M0 49H400M53.758 0V203.346M23 0V203.346M85 0V203.346M118.692 0V203.346M149.45 0V203.346M180.209 0V203.346M212 0V203.346M241.725 0V203.346M273 0V203.346M303.242 0V203.346M303.242 0V203.346M334 0V203.346" stroke="#21272A" stroke-width="2"/>
<mask id="mask0_2_37" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="66" y="48" width="38" height="82">
<path fill-rule="evenodd" clip-rule="evenodd" d="M73 50H83.84V98H66V106.571H83.84V128.143H72.857V129.857H96.857V128.143H85.875V106.571H103.714V98H85.874V50H97V48H73V50Z" fill="white"/>
</mask>
<g mask="url(#mask0_2_37)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M73 50H83.84V98H66V106.571H83.84V128.143H72.857V129.857H96.857V128.143H85.875V106.571H103.714V98H85.874V50H97V48H73V50Z" fill="#161616"/>
<path d="M83.84 50H85.84V48H83.84V50ZM73 50H71V52H73V50ZM83.84 98V100H85.84V98H83.84ZM66 98V96H64V98H66ZM66 106.571H64V108.571H66V106.571ZM83.84 106.571H85.84V104.571H83.84V106.571ZM83.84 128.143V130.143H85.84V128.143H83.84ZM72.857 128.143V126.143H70.857V128.143H72.857ZM72.857 129.857H70.857V131.857H72.857V129.857ZM96.857 129.857V131.857H98.857V129.857H96.857ZM96.857 128.143H98.857V126.143H96.857V128.143ZM85.875 128.143H83.875V130.143H85.875V128.143ZM85.875 106.571V104.571H83.875V106.571H85.875ZM103.714 106.571V108.571H105.714V106.571H103.714ZM103.714 98H105.714V96H103.714V98ZM85.874 98H83.874V100H85.874V98ZM85.874 50V48H83.874V50H85.874ZM97 50V52H99V50H97ZM97 48H99V46H97V48ZM73 48V46H71V48H73ZM83.84 48H73V52H83.84V48ZM85.84 98V50H81.84V98H85.84ZM66 100H83.84V96H66V100ZM68 106.571V98H64V106.571H68ZM83.84 104.571H66V108.571H83.84V104.571ZM85.84 128.143V106.571H81.84V128.143H85.84ZM72.857 130.143H83.84V126.143H72.857V130.143ZM74.857 129.857V128.143H70.857V129.857H74.857ZM96.857 127.857H72.857V131.857H96.857V127.857ZM94.857 128.143V129.857H98.857V128.143H94.857ZM85.875 130.143H96.857V126.143H85.875V130.143ZM83.875 106.571V128.143H87.875V106.571H83.875ZM103.714 104.571H85.874V108.571H103.714V104.571ZM101.714 98V106.571H105.714V98H101.714ZM85.874 100H103.714V96H85.874V100ZM83.874 50V98H87.874V50H83.874ZM97 48H85.875V52H97V48ZM95 48V50H99V48H95ZM73 50H97V46H73V50ZM75 50V48H71V50H75Z" fill="url(#paint0_linear_2_37)"/>
</g>
<mask id="mask1_2_37" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="130" y="22" width="38" height="133">
<path fill-rule="evenodd" clip-rule="evenodd" d="M137.357 24.5H148.357V44H130V52.571H148.357V152.786H137.357V154.786H161.357V152.786H150.357V52.571H167.714V44H150.357V24.5H161.357V22.5H137.357V24.5Z" fill="white"/>
</mask>
<g mask="url(#mask1_2_37)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M137.357 24.5H148.357V44H130V52.571H148.357V152.786H137.357V154.786H161.357V152.786H150.357V52.571H167.714V44H150.357V24.5H161.357V22.5H137.357V24.5Z" fill="#161616"/>
<path d="M148.357 24.5H150.357V22.5H148.357V24.5ZM137.357 24.5H135.357V26.5H137.357V24.5ZM148.357 44V46H150.357V44H148.357ZM130 44V42H128V44H130ZM130 52.571H128V54.571H130V52.571ZM148.357 52.571H150.357V50.571H148.357V52.571ZM148.357 152.786V154.786H150.357V152.786H148.357ZM137.357 152.786V150.786H135.357V152.786H137.357ZM137.357 154.786H135.357V156.786H137.357V154.786ZM161.357 154.786V156.786H163.357V154.786H161.357ZM161.357 152.786H163.357V150.786H161.357V152.786ZM150.357 152.786H148.357V154.786H150.357V152.786ZM150.357 52.571V50.571H148.357V52.571H150.357ZM167.714 52.571V54.571H169.714V52.571H167.714ZM167.714 44H169.714V42H167.714V44ZM150.357 44H148.357V46H150.357V44ZM150.357 24.5V22.5H148.357V24.5H150.357ZM161.357 24.5V26.5H163.357V24.5H161.357ZM161.357 22.5H163.357V20.5H161.357V22.5ZM137.357 22.5V20.5H135.357V22.5H137.357ZM148.357 22.5H137.357V26.5H148.357V22.5ZM150.357 44V24.5H146.357V44H150.357ZM130 46H148.357V42H130V46ZM132 52.571V44H128V52.571H132ZM148.357 50.571H130V54.571H148.357V50.571ZM150.357 152.786V52.571H146.357V152.786H150.357ZM137.357 154.786H148.357V150.786H137.357V154.786ZM139.357 154.786V152.786H135.357V154.786H139.357ZM161.357 152.786H137.357V156.786H161.357V152.786ZM159.357 152.786V154.786H163.357V152.786H159.357ZM150.357 154.786H161.357V150.786H150.357V154.786ZM148.357 52.571V152.786H152.357V52.571H148.357ZM167.714 50.571H150.357V54.571H167.714V50.571ZM165.714 44V52.571H169.714V44H165.714ZM150.357 46H167.714V42H150.357V46ZM148.357 24.5V44H152.357V24.5H148.357ZM161.357 22.5H150.357V26.5H161.357V22.5ZM159.357 22.5V24.5H163.357V22.5H159.357ZM137.357 24.5H161.357V20.5H137.357V24.5ZM139.357 24.5V22.5H135.357V24.5H139.357Z" fill="url(#paint1_linear_2_37)"/>
</g>
<mask id="mask2_2_37" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="193" y="47" width="38" height="57">
<path fill-rule="evenodd" clip-rule="evenodd" d="M199.857 49.857H211V71.143H193V79.714H211V102H199.857V104H223.857V102H213V79.714H230.714V71.143H213V49.857H223.857V47.857H199.857V49.857Z" fill="white"/>
</mask>
<g mask="url(#mask2_2_37)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M199.857 49.857H211V71.143H193V79.714H211V102H199.857V104H223.857V102H213V79.714H230.714V71.143H213V49.857H223.857V47.857H199.857V49.857Z" fill="#161616"/>
<path d="M211 49.857H213V47.857H211V49.857ZM199.857 49.857H197.857V51.857H199.857V49.857ZM211 71.143V73.143H213V71.143H211ZM193 71.143V69.143H191V71.143H193ZM193 79.714H191V81.714H193V79.714ZM211 79.714H213V77.714H211V79.714ZM211 102V104H213V102H211ZM199.857 102V100H197.857V102H199.857ZM199.857 104H197.857V106H199.857V104ZM223.857 104V106H225.857V104H223.857ZM223.857 102H225.857V100H223.857V102ZM213 102H211V104H213V102ZM213 79.714V77.714H211V79.714H213ZM230.714 79.714V81.714H232.714V79.714H230.714ZM230.714 71.143H232.714V69.143H230.714V71.143ZM213 71.143H211V73.143H213V71.143ZM213 49.857V47.857H211V49.857H213ZM223.857 49.857V51.857H225.857V49.857H223.857ZM223.857 47.857H225.857V45.857H223.857V47.857ZM199.857 47.857V45.857H197.857V47.857H199.857ZM211 47.857H199.857V51.857H211V47.857ZM213 71.143V49.857H209V71.143H213ZM193 73.143H211V69.143H193V73.143ZM195 79.714V71.143H191V79.714H195ZM211 77.714H193V81.714H211V77.714ZM213 102V79.714H209V102H213ZM199.857 104H211V100H199.857V104ZM201.857 104V102H197.857V104H201.857ZM223.857 102H199.857V106H223.857V102ZM221.857 102V104H225.857V102H221.857ZM213 104H223.857V100H213V104ZM211 79.714V102H215V79.714H211ZM230.714 77.714H213V81.714H230.714V77.714ZM228.714 71.143V79.714H232.714V71.143H228.714ZM213 73.143H230.714V69.143H213V73.143ZM211 49.857V71.143H215V49.857H211ZM223.857 47.857H213V51.857H223.857V47.857ZM221.857 47.857V49.857H225.857V47.857H221.857ZM199.857 49.857H223.857V45.857H199.857V49.857ZM201.857 49.857V47.857H197.857V49.857H201.857Z" fill="url(#paint2_linear_2_37)" fill-opacity="0.91"/>
</g>
<mask id="mask3_2_37" style="mask-type:alpha" maskUnits="userSpaceOnUse" x="254" y="48" width="38" height="133">
<path fill-rule="evenodd" clip-rule="evenodd" d="M260.857 50H271.857V149H254V157.571H271.857V178.286H260.857V180.286H284.857V178.286H273.857V157.571H291.714V149H273.857V50H284.857V48H260.857V50V50Z" fill="white"/>
</mask>
<g mask="url(#mask3_2_37)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M260.857 50H271.857V149H254V157.571H271.857V178.286H260.857V180.286H284.857V178.286H273.857V157.571H291.714V149H273.857V50H284.857V48H260.857V50V50Z" fill="#161616"/>
<path d="M271.857 50H273.857V48H271.857V50ZM260.857 50H258.857V52H260.857V50ZM271.857 149V151H273.857V149H271.857ZM254 149V147H252V149H254ZM254 157.571H252V159.571H254V157.571ZM271.857 157.571H273.857V155.571H271.857V157.571ZM271.857 178.286V180.286H273.857V178.286H271.857ZM260.857 178.286V176.286H258.857V178.286H260.857ZM260.857 180.286H258.857V182.286H260.857V180.286ZM284.857 180.286V182.286H286.857V180.286H284.857ZM284.857 178.286H286.857V176.286H284.857V178.286ZM273.857 178.286H271.857V180.286H273.857V178.286ZM273.857 157.571V155.571H271.857V157.571H273.857ZM291.714 157.571V159.571H293.714V157.571H291.714ZM291.714 149H293.714V147H291.714V149ZM273.857 149H271.857V151H273.857V149ZM273.857 50V48H271.857V50H273.857ZM284.857 50V52H286.857V50H284.857ZM284.857 48H286.857V46H284.857V48ZM260.857 48V46H258.857V48H260.857ZM271.857 48H260.857V52H271.857V48ZM273.857 149V50H269.857V149H273.857ZM254 151H271.857V147H254V151ZM256 157.571V149H252V157.571H256ZM271.857 155.571H254V159.571H271.857V155.571ZM273.857 178.286V157.571H269.857V178.286H273.857ZM260.857 180.286H271.857V176.286H260.857V180.286ZM262.857 180.286V178.286H258.857V180.286H262.857ZM284.857 178.286H260.857V182.286H284.857V178.286ZM282.857 178.286V180.286H286.857V178.286H282.857ZM273.857 180.286H284.857V176.286H273.857V180.286ZM271.857 157.571V178.286H275.857V157.571H271.857ZM291.714 155.571H273.857V159.571H291.714V155.571ZM289.714 149V157.571H293.714V149H289.714ZM273.857 151H291.714V147H273.857V151ZM271.857 50V149H275.857V50H271.857ZM284.857 48H273.857V52H284.857V48ZM282.857 48V50H286.857V48H282.857ZM260.857 50H284.857V46H260.857V50ZM262.857 50V48H258.857V50H262.857Z" fill="url(#paint3_linear_2_37)"/>
</g>
</g>
<defs>
<linearGradient id="paint0_linear_2_37" x1="84.857" y1="73.043" x2="84.857" y2="200.125" gradientUnits="userSpaceOnUse">
<stop stop-color="#78A9FF"/>
<stop offset="1" stop-color="#78A9FF" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint1_linear_2_37" x1="149.357" y1="74.04" x2="149.357" y2="197.735" gradientUnits="userSpaceOnUse">
<stop stop-color="#78A9FF"/>
<stop offset="1" stop-color="#78A9FF" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint2_linear_2_37" x1="211.857" y1="81.429" x2="211.857" y2="190.286" gradientUnits="userSpaceOnUse">
<stop stop-color="#78A9FF"/>
<stop offset="1" stop-color="#78A9FF" stop-opacity="0"/>
</linearGradient>
<linearGradient id="paint3_linear_2_37" x1="264.66" y1="96.104" x2="264.66" y2="206.915" gradientUnits="userSpaceOnUse">
<stop stop-color="#78A9FF"/>
<stop offset="1" stop-color="#78A9FF" stop-opacity="0"/>
</linearGradient>
<clipPath id="clip0_2_37">
<rect width="357" height="204" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 9.9 KiB

View File

@ -1,32 +0,0 @@
<svg width="357" height="204" viewBox="0 0 357 204" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_3599_432434)">
<rect width="357" height="204" fill="#F4F4F4"/>
<path d="M0 153.791C3.77581 153.791 268.24 153.791 400 153.791" stroke="#DDE1E6" stroke-width="2"/>
<path d="M0 102.528C3.77581 102.528 268.24 102.528 400 102.528" stroke="#DDE1E6" stroke-width="2"/>
<path d="M0 49.5549C3.77581 49.5549 268.24 49.5549 400 49.5549" stroke="#DDE1E6" stroke-width="2"/>
<path d="M53.7578 0C53.7578 1.91949 53.7578 136.364 53.7578 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M23 0C23 1.91949 23 136.364 23 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M84.5166 0C84.5166 1.91949 84.5166 136.364 84.5166 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M118.692 0C118.692 1.91949 118.692 136.364 118.692 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M149.45 0C149.45 1.91949 149.45 136.364 149.45 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M180.209 0C180.209 1.91949 180.209 136.364 180.209 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M210.967 0C210.967 1.91949 210.967 136.364 210.967 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M241.726 0C241.726 1.91949 241.726 136.364 241.726 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M272.483 0C272.483 1.91949 272.483 136.364 272.483 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M303.242 0C303.242 1.91949 303.242 136.364 303.242 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M303.242 0C303.242 1.91949 303.242 136.364 303.242 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path d="M334 0C334 1.91949 334 136.364 334 203.346" stroke="#DDE1E6" stroke-width="2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M233.492 114.692C221.692 81.5963 210.385 65.8217 200.912 58.3004C196.191 54.5515 191.912 52.8431 188.222 52.0621C185.769 51.5428 183.568 51.4296 181.618 51.4126V51.4205C181.284 51.4205 180.941 51.418 180.587 51.4155L180.587 51.4155C180.465 51.4146 180.341 51.4137 180.217 51.4129C180.092 51.4137 179.969 51.4146 179.846 51.4155L179.846 51.4155C179.493 51.418 179.149 51.4205 178.815 51.4205V51.4126C176.866 51.4296 174.665 51.5428 172.211 52.0621C168.521 52.8431 164.243 54.5515 159.521 58.3004C150.048 65.8217 138.741 81.5963 126.941 114.692C107.902 168.094 71.6049 182.824 55.5361 183.423L55.4617 181.424C70.6292 180.859 106.263 166.733 125.058 114.02C136.904 80.793 148.371 64.5999 158.277 56.7341C163.246 52.7895 167.809 50.9495 171.797 50.1054C175.059 49.4151 177.925 49.397 180.217 49.4123C182.508 49.397 185.375 49.4151 188.636 50.1054C192.625 50.9495 197.188 52.7895 202.156 56.7341C212.063 64.5999 223.529 80.793 235.376 114.02C254.17 166.733 289.804 180.859 304.972 181.424L304.897 183.423C288.828 182.824 252.532 168.094 233.492 114.692Z" fill="url(#paint0_linear_3599_432434)"/>
<path d="M180.209 59.8076V182.841" stroke="#393939" stroke-width="2" stroke-dasharray="3.42 3.42"/>
</g>
<rect x="1" y="1" width="355" height="202" stroke="#F4F4F4" stroke-width="2"/>
<defs>
<linearGradient id="paint0_linear_3599_432434" x1="186.523" y1="52.8264" x2="189.627" y2="183.087" gradientUnits="userSpaceOnUse">
<stop offset="0.328125" stop-color="#0F62FE"/>
<stop offset="1" stop-color="#0F62FE" stop-opacity="0"/>
</linearGradient>
<clipPath id="clip0_3599_432434">
<rect width="357" height="204" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 3.3 KiB

View File

@ -1,17 +0,0 @@
<svg width="357" height="204" viewBox="0 0 357 204" fill="none" xmlns="http://www.w3.org/2000/svg">
<g clip-path="url(#clip0_2_58)">
<path d="M0 0H357V204H0V0Z" fill="#161616"/>
<path d="M0 153.791H400M0 102.528H400M0 49.555H400M53.758 0V203.346M23 0V203.346M84.517 0V203.346M118.692 0V203.346M149.45 0V203.346M180.209 0V203.346M210.967 0V203.346M241.725 0V203.346M272.484 0V203.346M303.242 0V203.346M303.242 0V203.346M334 0V203.346" stroke="#21272A" stroke-width="2"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M233.492 114.692C221.692 81.596 210.385 65.822 200.912 58.3C196.19 54.552 191.912 52.843 188.222 52.062C185.768 51.542 183.568 51.43 181.618 51.412V51.42C181.284 51.42 180.94 51.418 180.587 51.415L180.216 51.413C180.092 51.413 179.968 51.415 179.846 51.416C179.493 51.418 179.149 51.421 178.815 51.421V51.413C176.865 51.43 174.665 51.543 172.211 52.063C168.521 52.843 164.243 54.551 159.521 58.3C150.048 65.822 138.741 81.596 126.941 114.692C107.901 168.094 71.605 182.824 55.536 183.423L55.461 181.424C70.629 180.859 106.263 166.733 125.057 114.02C136.904 80.793 148.37 64.6 158.277 56.734C163.245 52.789 167.809 50.949 171.797 50.105C175.058 49.415 177.925 49.397 180.216 49.412C182.508 49.397 185.374 49.415 188.636 50.105C192.624 50.95 197.188 52.789 202.156 56.735C212.063 64.6 223.529 80.793 235.376 114.02C254.17 166.733 289.804 180.859 304.971 181.424L304.897 183.423C288.828 182.824 252.531 168.094 233.492 114.692V114.692Z" fill="url(#paint0_linear_2_58)"/>
<path d="M180.209 59.808V182.84" stroke="#E0E0E0" stroke-width="2" stroke-dasharray="3.42 3.42"/>
</g>
<defs>
<linearGradient id="paint0_linear_2_58" x1="186.523" y1="52.826" x2="189.627" y2="183.087" gradientUnits="userSpaceOnUse">
<stop offset="0.328" stop-color="#78A9FF"/>
<stop offset="1" stop-color="#78A9FF" stop-opacity="0"/>
</linearGradient>
<clipPath id="clip0_2_58">
<rect width="357" height="204" fill="white"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.3 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.0 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.8 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.9 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 2.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 45 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 35 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 57 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 12 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.2 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.5 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 10 KiB

View File

@ -0,0 +1,54 @@
// This code is a Qiskit project.
//
// (C) Copyright IBM 2024.
//
// This code is licensed under the Apache License, Version 2.0. You may
// obtain a copy of this license in the LICENSE file in the root directory
// of this source tree or at http://www.apache.org/licenses/LICENSE-2.0.
//
// Any modifications or derivative works of this code must retain this
// copyright notice, and modified files need to carry a notice indicating
// that they have been altered from the originals.
// To run:
// node -r esbuild-register scripts/commands/find-stale-images.ts
import { zxMain } from "../lib/zx";
import { $ } from "zx";
import { globby } from "globby";
import { zip } from "lodash";
zxMain(async () => {
const paths = await getStrippedImagePaths();
const results = await Promise.all(paths.map((fp) => isImageUnused(fp)));
const unused = zip(paths, results)
.filter(([_fp, result]) => result)
.map(([fp]) => `public/${fp}`);
if (unused.length === 0) {
console.log("✅ all images used");
} else {
console.error(
`🙅 ${
unused.length
} stale images found. These images should usually be deleted:\n\n${unused.join(
"\n",
)}`,
);
process.exit(1);
}
});
async function getStrippedImagePaths(): Promise<string[]> {
const fullPaths = await globby("public/images/**");
return fullPaths.map((fp) =>
fp
.split("public/")[1]
// Dark mode variants won't show up in search. But as long
// as the path with `@dark` removed is found, it's a valid file.
.replace(/@dark/g, ""),
);
}
async function isImageUnused(fp: string): Promise<boolean> {
const grep = await $`git grep ${fp}`.quiet().catch((result) => result);
return grep.stdout === "";
}