64 lines
4.2 KiB
XML
64 lines
4.2 KiB
XML
<?xml version="1.0" encoding="UTF-8"?>
|
||
<svg xmlns="http://www.w3.org/2000/svg" width="720" height="1080" viewBox="0 0 720 1080" role="img" aria-labelledby="title desc">
|
||
<title id="title">Диагностика идентичности ES-модулей по URL</title>
|
||
<desc id="desc">Верхняя панель показывает два import одного URL init.js и одну module identity. Нижняя панель показывает init.js и init.js с query как две разные identity. Внизу указан порядок проверки.</desc>
|
||
<defs>
|
||
<linearGradient id="background" x1="0" y1="0" x2="1" y2="1">
|
||
<stop offset="0" stop-color="#241536"/>
|
||
<stop offset="1" stop-color="#081221"/>
|
||
</linearGradient>
|
||
<marker id="arrowMint" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto">
|
||
<path d="M0 0 L10 5 L0 10 z" fill="#4cdbbd"/>
|
||
</marker>
|
||
<marker id="arrowRose" viewBox="0 0 10 10" refX="9" refY="5" markerWidth="8" markerHeight="8" orient="auto">
|
||
<path d="M0 0 L10 5 L0 10 z" fill="#ff87b3"/>
|
||
</marker>
|
||
<style>
|
||
.kicker { font: 700 16px Arial, sans-serif; letter-spacing: 2px; fill: #ff9cc1; }
|
||
.heading { font: 700 35px Arial, sans-serif; fill: #fff5fa; }
|
||
.section { font: 700 26px Arial, sans-serif; fill: #fdf5ff; }
|
||
.code { font: 19px Menlo, Consolas, monospace; fill: #dceaff; }
|
||
.small { font: 20px Arial, sans-serif; fill: #e1d9ed; }
|
||
.good { font: 700 20px Arial, sans-serif; fill: #082019; }
|
||
.warn { font: 700 20px Arial, sans-serif; fill: #30101d; }
|
||
</style>
|
||
</defs>
|
||
<rect width="720" height="1080" fill="url(#background)"/>
|
||
<text x="44" y="58" class="kicker">FIELD DIAGNOSTIC · MODULE IDENTITY</text>
|
||
<text x="44" y="106" class="heading">Сравниваем URL, а не считаем теги</text>
|
||
|
||
<rect x="44" y="148" width="632" height="326" rx="22" fill="#173f45" stroke="#69e0c5" stroke-width="2"/>
|
||
<text x="76" y="194" class="section">Один разрешённый URL</text>
|
||
<rect x="76" y="226" width="222" height="66" rx="12" fill="#244a56"/>
|
||
<text x="98" y="267" class="code">catalog/main.js</text>
|
||
<rect x="76" y="316" width="222" height="66" rx="12" fill="#244a56"/>
|
||
<text x="98" y="357" class="code">admin/main.js</text>
|
||
<path d="M298 259 H410" stroke="#4cdbbd" stroke-width="5" marker-end="url(#arrowMint)"/>
|
||
<path d="M298 349 H410" stroke="#4cdbbd" stroke-width="5" marker-end="url(#arrowMint)"/>
|
||
<rect x="426" y="262" width="214" height="98" rx="14" fill="#1a6558" stroke="#69e0c5" stroke-width="2"/>
|
||
<text x="450" y="301" class="code">/assets/init.js</text>
|
||
<text x="450" y="333" class="small">одна identity</text>
|
||
<rect x="192" y="404" width="336" height="46" rx="23" fill="#76e4c9"/>
|
||
<text x="286" y="434" class="good">URL = 1</text>
|
||
|
||
<rect x="44" y="516" width="632" height="350" rx="22" fill="#4d2c42" stroke="#ff9cc1" stroke-width="2"/>
|
||
<text x="76" y="562" class="section">Разные разрешённые URL</text>
|
||
<rect x="76" y="594" width="222" height="66" rx="12" fill="#59334a"/>
|
||
<text x="98" y="635" class="code">catalog/main.js</text>
|
||
<path d="M298 627 H410" stroke="#ff87b3" stroke-width="5" marker-end="url(#arrowRose)"/>
|
||
<rect x="426" y="584" width="214" height="86" rx="14" fill="#743653" stroke="#ff9cc1" stroke-width="2"/>
|
||
<text x="450" y="635" class="code">/assets/init.js</text>
|
||
<rect x="76" y="704" width="222" height="66" rx="12" fill="#59334a"/>
|
||
<text x="98" y="745" class="code">admin/main.js</text>
|
||
<path d="M298 737 H410" stroke="#ff87b3" stroke-width="5" marker-end="url(#arrowRose)"/>
|
||
<rect x="426" y="694" width="214" height="86" rx="14" fill="#743653" stroke="#ff9cc1" stroke-width="2"/>
|
||
<text x="446" y="745" class="code">/assets/init.js?demo=2</text>
|
||
<rect x="192" y="802" width="336" height="46" rx="23" fill="#ff9abf"/>
|
||
<text x="286" y="832" class="warn">URL = 2</text>
|
||
|
||
<rect x="44" y="910" width="632" height="122" rx="18" fill="#131d32" stroke="#5f6f97" stroke-width="2"/>
|
||
<text x="76" y="948" class="small">Проверка: import.meta.url → Initiator</text>
|
||
<text x="76" y="978" class="small">→ status / MIME → entry-владелец</text>
|
||
<text x="76" y="1008" class="small">→ один bootstrap</text>
|
||
</svg>
|