537 lines
28 KiB
HTML
537 lines
28 KiB
HTML
<!DOCTYPE html>
|
||
<html lang="ru">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||
<meta name="description" content="Полная документация Phantom Protocol — руководства, API, примеры кода">
|
||
<title>Документация — Phantom Protocol</title>
|
||
|
||
<link href="https://fonts.googleapis.com/css2?family=Space+Grotesk:wght@300;400;500;600;700&family=JetBrains+Mono:wght@400;500;600&display=swap" rel="stylesheet">
|
||
<link href="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/css/bootstrap.min.css" rel="stylesheet">
|
||
<link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@fortawesome/fontawesome-free@6.4.0/css/all.min.css">
|
||
<link href="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/themes/prism-tomorrow.min.css" rel="stylesheet">
|
||
<link rel="stylesheet" href="css/style.css">
|
||
<link rel="stylesheet" href="css/desktop-fix.css">
|
||
<link rel="stylesheet" href="css/responsive.css">
|
||
<link rel="stylesheet" href="css/vendor-prefixes.css">
|
||
<link rel="stylesheet" href="css/visual-fixes.css">
|
||
</head>
|
||
<body data-theme="dark">
|
||
|
||
<!-- Animated Background Canvas -->
|
||
<canvas id="phantomBackground"></canvas>
|
||
|
||
<!-- Навигация -->
|
||
<nav class="navbar navbar-expand-lg navbar-dark fixed-top glass-nav">
|
||
<div class="container">
|
||
<a class="navbar-brand" href="index.html">
|
||
<i class="fas fa-ghost"></i> <span class="brand-text">Phantom Protocol</span>
|
||
</a>
|
||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarNav">
|
||
<span class="navbar-toggler-icon"></span>
|
||
</button>
|
||
<div class="collapse navbar-collapse" id="navbarNav">
|
||
<ul class="navbar-nav ms-auto">
|
||
<li class="nav-item"><a class="nav-link" href="index.html">Главная</a></li>
|
||
<li class="nav-item"><a class="nav-link active" href="docs.html">Документация</a></li>
|
||
<li class="nav-item"><a class="nav-link" href="architecture.html">Архитектура</a></li>
|
||
<li class="nav-item"><a class="nav-link" href="download.html">Скачать</a></li>
|
||
<li class="nav-item"><a class="nav-link" href="community.html">Сообщество</a></li>
|
||
<li class="nav-item"><a class="nav-link" href="about.html">О проекте</a></li>
|
||
<li class="nav-item">
|
||
<a class="nav-link btn-gradient ms-lg-2" href="download.html">
|
||
<i class="fas fa-download me-1"></i> Начать
|
||
</a>
|
||
</li>
|
||
<li class="nav-item">
|
||
<button class="btn btn-sm theme-toggle" id="themeToggle">
|
||
<i class="fas fa-moon"></i>
|
||
</button>
|
||
</li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
</nav>
|
||
|
||
<!-- Hero -->
|
||
<section class="docs-hero pt-5 mt-5">
|
||
<div class="container">
|
||
<div class="row">
|
||
<div class="col-lg-8 mx-auto text-center py-5">
|
||
<h1 class="display-3 mb-3">
|
||
<i class="fas fa-book text-gradient"></i> Документация
|
||
</h1>
|
||
<p class="lead">Всё, что нужно знать для работы с Phantom Protocol</p>
|
||
<div class="search-box mt-4">
|
||
<input type="text" class="form-control form-control-lg" placeholder="Поиск в документации..." id="docsSearch">
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Основной контент -->
|
||
<section class="py-5">
|
||
<div class="container">
|
||
<div class="row">
|
||
<!-- Sidebar -->
|
||
<div class="col-lg-3 mb-4">
|
||
<div class="docs-sidebar sticky-top" style="top: 100px;">
|
||
<h5 class="mb-3">Навигация</h5>
|
||
<ul class="nav flex-column">
|
||
<li class="nav-item"><a href="#quickstart" class="nav-link active">Быстрый старт</a></li>
|
||
<li class="nav-item"><a href="#installation" class="nav-link">Установка</a></li>
|
||
<li class="nav-item"><a href="#configuration" class="nav-link">Конфигурация</a></li>
|
||
<li class="nav-item"><a href="#api" class="nav-link">API Reference</a></li>
|
||
<li class="nav-item"><a href="#cli" class="nav-link">CLI Commands</a></li>
|
||
<li class="nav-item"><a href="#examples" class="nav-link">Примеры</a></li>
|
||
<li class="nav-item"><a href="#troubleshooting" class="nav-link">Troubleshooting</a></li>
|
||
<li class="nav-item"><a href="#faq" class="nav-link">FAQ</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Контент -->
|
||
<div class="col-lg-9">
|
||
|
||
<!-- Быстрый старт -->
|
||
<div id="quickstart" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-rocket text-primary"></i> Быстрый старт</h2>
|
||
<p class="lead">Запустите Phantom Protocol за 60 секунд.</p>
|
||
|
||
<div class="alert alert-info">
|
||
<i class="fas fa-info-circle"></i> Требования: Docker 20.10+ или Node.js 18+
|
||
</div>
|
||
|
||
<h4 class="mt-4">Вариант 1: Docker (рекомендуется)</h4>
|
||
<pre><code class="language-bash"># Запуск ноды
|
||
docker run -d --name phantom \
|
||
-p 9050:9050 \
|
||
-p 4000:4000 \
|
||
phantomprotocol/phantom:latest
|
||
|
||
# Проверка статуса
|
||
docker logs phantom</code></pre>
|
||
|
||
<h4 class="mt-4">Вариант 2: NPM</h4>
|
||
<pre><code class="language-bash"># Установка
|
||
npm install -g @phantom-protocol/cli
|
||
|
||
# Запуск ноды
|
||
phantom start
|
||
|
||
# Проверка статуса
|
||
phantom status</code></pre>
|
||
|
||
<div class="mt-4 p-4 bg-success bg-opacity-10 rounded">
|
||
<h5><i class="fas fa-check-circle text-success"></i> Готово!</h5>
|
||
<p class="mb-0">Ваша нода запущена. SOCKS5 proxy доступен на <code>localhost:9050</code></p>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Установка -->
|
||
<div id="installation" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-download text-primary"></i> Установка</h2>
|
||
|
||
<h4>Системные требования</h4>
|
||
<ul class="list-styled">
|
||
<li><strong>OS:</strong> Linux, macOS, WSL2</li>
|
||
<li><strong>RAM:</strong> 512 MB минимум, 2 GB рекомендуется</li>
|
||
<li><strong>Disk:</strong> 1 GB свободного места</li>
|
||
<li><strong>Network:</strong> Открытые порты 4000-4100 (опционально)</li>
|
||
</ul>
|
||
|
||
<h4 class="mt-4">Docker установка</h4>
|
||
<pre><code class="language-bash"># Pull образа
|
||
docker pull phantomprotocol/phantom:latest
|
||
|
||
# Запуск с persistent storage
|
||
docker run -d --name phantom \
|
||
-v phantom-data:/data \
|
||
-p 9050:9050 \
|
||
-p 4000:4000 \
|
||
--restart unless-stopped \
|
||
phantomprotocol/phantom:latest</code></pre>
|
||
|
||
<h4 class="mt-4">Сборка из исходников</h4>
|
||
<pre><code class="language-bash"># Клонирование репозитория
|
||
git clone https://github.com/phantom-protocol/phantom.git
|
||
cd phantom
|
||
|
||
# Установка зависимостей
|
||
npm install
|
||
|
||
# Сборка
|
||
npm run build
|
||
|
||
# Запуск
|
||
npm start</code></pre>
|
||
</div>
|
||
|
||
<!-- Конфигурация -->
|
||
<div id="configuration" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-cog text-primary"></i> Конфигурация</h2>
|
||
|
||
<h4>Файл конфигурации</h4>
|
||
<p>Создайте <code>phantom.config.json</code> в рабочей директории:</p>
|
||
|
||
<pre><code class="language-json">{
|
||
"node": {
|
||
"port": 4000,
|
||
"bootstrap": [
|
||
"bootstrap1.phantom.network:4000",
|
||
"bootstrap2.phantom.network:4000"
|
||
],
|
||
"maxPeers": 50,
|
||
"dataDir": "./data"
|
||
},
|
||
"socks": {
|
||
"enabled": true,
|
||
"port": 9050,
|
||
"host": "127.0.0.1"
|
||
},
|
||
"crypto": {
|
||
"algorithm": "kyber1024",
|
||
"keyRotation": 86400
|
||
},
|
||
"logging": {
|
||
"level": "info",
|
||
"file": "./logs/phantom.log"
|
||
}
|
||
}</code></pre>
|
||
|
||
<h4 class="mt-4">Переменные окружения</h4>
|
||
<pre><code class="language-bash"># Порт SOCKS5
|
||
PHANTOM_SOCKS_PORT=9050
|
||
|
||
# Порт ноды
|
||
PHANTOM_NODE_PORT=4000
|
||
|
||
# Максимум пиров
|
||
PHANTOM_MAX_PEERS=50
|
||
|
||
# Уровень логирования
|
||
PHANTOM_LOG_LEVEL=info
|
||
|
||
# Директория данных
|
||
PHANTOM_DATA_DIR=/data</code></pre>
|
||
</div>
|
||
|
||
<!-- API Reference -->
|
||
<div id="api" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-code text-primary"></i> API Reference</h2>
|
||
|
||
<h4>REST API</h4>
|
||
<p>Phantom Protocol предоставляет REST API на порту <code>4001</code></p>
|
||
|
||
<h5 class="mt-4">GET /status</h5>
|
||
<p>Получить статус ноды</p>
|
||
<pre><code class="language-bash">curl http://localhost:4001/api/status</code></pre>
|
||
|
||
<p><strong>Response:</strong></p>
|
||
<pre><code class="language-json">{
|
||
"version": "2.0.0",
|
||
"uptime": 3600,
|
||
"peers": {
|
||
"connected": 45,
|
||
"max": 50
|
||
},
|
||
"dht": {
|
||
"nodes": 15230,
|
||
"buckets": 160
|
||
},
|
||
"traffic": {
|
||
"sent": 1048576,
|
||
"received": 2097152
|
||
}
|
||
}</code></pre>
|
||
|
||
<h5 class="mt-4">POST /node/connect</h5>
|
||
<p>Подключиться к ноде</p>
|
||
<pre><code class="language-bash">curl -X POST http://localhost:4001/api/node/connect \
|
||
-H "Content-Type: application/json" \
|
||
-d '{"address": "node.phantom.network:4000"}'</code></pre>
|
||
|
||
<h5 class="mt-4">GET /peers</h5>
|
||
<p>Список подключенных пиров</p>
|
||
<pre><code class="language-bash">curl http://localhost:4001/api/peers</code></pre>
|
||
</div>
|
||
|
||
<!-- CLI Commands -->
|
||
<div id="cli" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-terminal text-primary"></i> CLI Commands</h2>
|
||
|
||
<div class="table-responsive">
|
||
<table class="table table-hover">
|
||
<thead>
|
||
<tr>
|
||
<th>Команда</th>
|
||
<th>Описание</th>
|
||
</tr>
|
||
</thead>
|
||
<tbody>
|
||
<tr>
|
||
<td><code>phantom start</code></td>
|
||
<td>Запустить ноду</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>phantom stop</code></td>
|
||
<td>Остановить ноду</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>phantom status</code></td>
|
||
<td>Показать статус</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>phantom peers</code></td>
|
||
<td>Список пиров</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>phantom logs</code></td>
|
||
<td>Показать логи</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>phantom config</code></td>
|
||
<td>Показать конфигурацию</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>phantom keygen</code></td>
|
||
<td>Сгенерировать ключи</td>
|
||
</tr>
|
||
<tr>
|
||
<td><code>phantom version</code></td>
|
||
<td>Версия Phantom</td>
|
||
</tr>
|
||
</tbody>
|
||
</table>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Примеры -->
|
||
<div id="examples" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-lightbulb text-primary"></i> Примеры использования</h2>
|
||
|
||
<h4>Настройка браузера</h4>
|
||
<p>Firefox (рекомендуется):</p>
|
||
<ol>
|
||
<li>Settings → Network Settings → Settings</li>
|
||
<li>Manual proxy configuration</li>
|
||
<li>SOCKS Host: <code>127.0.0.1</code>, Port: <code>9050</code></li>
|
||
<li>SOCKS v5: ✓</li>
|
||
<li>Proxy DNS when using SOCKS v5: ✓</li>
|
||
</ol>
|
||
|
||
<h4 class="mt-4">Использование с curl</h4>
|
||
<pre><code class="language-bash"># HTTP запрос через Phantom
|
||
curl --socks5 127.0.0.1:9050 https://check.torproject.org
|
||
|
||
# С DNS через SOCKS
|
||
curl --socks5-hostname 127.0.0.1:9050 https://example.com</code></pre>
|
||
|
||
<h4 class="mt-4">Python пример</h4>
|
||
<pre><code class="language-python">import requests
|
||
|
||
proxies = {
|
||
'http': 'socks5://127.0.0.1:9050',
|
||
'https': 'socks5://127.0.0.1:9050'
|
||
}
|
||
|
||
response = requests.get('https://httpbin.org/ip', proxies=proxies)
|
||
print(response.json())</code></pre>
|
||
</div>
|
||
|
||
<!-- Troubleshooting -->
|
||
<div id="troubleshooting" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-wrench text-primary"></i> Troubleshooting</h2>
|
||
|
||
<h4>Нода не запускается</h4>
|
||
<div class="alert alert-warning">
|
||
<strong>Проблема:</strong> <code>Error: Address already in use</code>
|
||
<br><strong>Решение:</strong> Порт уже занят. Измените порт в конфигурации или остановите другое приложение.
|
||
</div>
|
||
|
||
<h4>Не могу подключиться к пирам</h4>
|
||
<div class="alert alert-warning">
|
||
<strong>Проблема:</strong> <code>No peers connected</code>
|
||
<br><strong>Решение:</strong> Проверьте firewall. Откройте порты 4000-4100 или используйте UPnP.
|
||
</div>
|
||
|
||
<h4>Низкая скорость</h4>
|
||
<div class="alert alert-info">
|
||
<strong>Совет:</strong> Увеличьте <code>maxPeers</code> в конфигурации до 100. Подключитесь к bootstrap нодам вручную.
|
||
</div>
|
||
</div>
|
||
|
||
<!-- FAQ -->
|
||
<div id="faq" class="doc-section mb-5">
|
||
<h2 class="mb-4"><i class="fas fa-question-circle text-primary"></i> FAQ</h2>
|
||
|
||
<div class="accordion" id="faqAccordion">
|
||
<div class="accordion-item">
|
||
<h2 class="accordion-header">
|
||
<button class="accordion-button" type="button" data-bs-toggle="collapse" data-bs-target="#faq1">
|
||
Насколько Phantom Protocol безопасен?
|
||
</button>
|
||
</h2>
|
||
<div id="faq1" class="accordion-collapse collapse show" data-bs-parent="#faqAccordion">
|
||
<div class="accordion-body">
|
||
Phantom использует постквантовую криптографию (CRYSTALS-Kyber-1024), полностью децентрализованную DHT-архитектуру и фантомные адреса для предотвращения корреляции трафика. Протокол устойчив к timing attacks и global passive adversary.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item">
|
||
<h2 class="accordion-header">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq2">
|
||
Чем Phantom отличается от Tor?
|
||
</button>
|
||
</h2>
|
||
<div id="faq2" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
|
||
<div class="accordion-body">
|
||
Главные отличия: 1) Полностью децентрализованная DHT (нет директорий), 2) Постквантовая криптография, 3) Фантомные адреса (невозможна корреляция), 4) O(log n) масштабируемость вместо O(n).
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item">
|
||
<h2 class="accordion-header">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq3">
|
||
Можно ли запустить exit-ноду?
|
||
</button>
|
||
</h2>
|
||
<div id="faq3" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
|
||
<div class="accordion-body">
|
||
Да. Добавьте <code>"exitNode": true</code> в конфигурацию. Учтите юридические последствия в вашей юрисдикции. Используйте <code>exitPolicy</code> для ограничения портов.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
<div class="accordion-item">
|
||
<h2 class="accordion-header">
|
||
<button class="accordion-button collapsed" type="button" data-bs-toggle="collapse" data-bs-target="#faq4">
|
||
Какая скорость подключения?
|
||
</button>
|
||
</h2>
|
||
<div id="faq4" class="accordion-collapse collapse" data-bs-parent="#faqAccordion">
|
||
<div class="accordion-body">
|
||
Средняя латентность ~200-300ms, скорость зависит от количества пиров и их bandwidth. С 50+ пирами можно достичь 5-10 Mbps для обычного веб-серфинга.
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</section>
|
||
|
||
<!-- Footer -->
|
||
<!-- Единый Footer для всех страниц Phantom Protocol -->
|
||
<footer class="footer py-5 mt-5">
|
||
<div class="container">
|
||
<div class="row">
|
||
<!-- Колонка 1: Логотип и описание -->
|
||
<div class="col-lg-4 col-md-6 mb-4 mb-lg-0">
|
||
<h5 class="mb-3">
|
||
<i class="fas fa-ghost text-gradient"></i> Phantom Protocol
|
||
</h5>
|
||
<p class="text-muted">
|
||
Децентрализованная приватная сеть нового поколения с постквантовой криптографией.
|
||
</p>
|
||
<div class="social-links mt-3">
|
||
<a href="https://github.com/phantom-protocol" target="_blank" class="me-2">
|
||
<i class="fab fa-github"></i>
|
||
</a>
|
||
<a href="https://twitter.com/PhantomProtocol" target="_blank" class="me-2">
|
||
<i class="fab fa-twitter"></i>
|
||
</a>
|
||
<a href="https://t.me/phantomprotocol" target="_blank" class="me-2">
|
||
<i class="fab fa-telegram"></i>
|
||
</a>
|
||
<a href="https://discord.gg/phantom" target="_blank">
|
||
<i class="fab fa-discord"></i>
|
||
</a>
|
||
</div>
|
||
</div>
|
||
|
||
<!-- Колонка 2: Продукт -->
|
||
<div class="col-lg-2 col-md-6 mb-4 mb-lg-0">
|
||
<h6 class="mb-3">Продукт</h6>
|
||
<ul class="list-unstyled">
|
||
<li class="mb-2"><a href="architecture.html" class="footer-link">Архитектура</a></li>
|
||
<li class="mb-2"><a href="download.html" class="footer-link">Скачать</a></li>
|
||
<li class="mb-2"><a href="index.html#comparison" class="footer-link">Сравнение</a></li>
|
||
<li class="mb-2"><a href="index.html#demo" class="footer-link">Демо</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Колонка 3: Ресурсы -->
|
||
<div class="col-lg-2 col-md-6 mb-4 mb-lg-0">
|
||
<h6 class="mb-3">Ресурсы</h6>
|
||
<ul class="list-unstyled">
|
||
<li class="mb-2"><a href="docs.html" class="footer-link">Документация</a></li>
|
||
<li class="mb-2"><a href="docs.html#api" class="footer-link">API Reference</a></li>
|
||
<li class="mb-2"><a href="docs.html#faq" class="footer-link">FAQ</a></li>
|
||
<li class="mb-2"><a href="https://github.com/phantom-protocol" target="_blank" class="footer-link">GitHub</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Колонка 4: Сообщество -->
|
||
<div class="col-lg-2 col-md-6 mb-4 mb-lg-0">
|
||
<h6 class="mb-3">Сообщество</h6>
|
||
<ul class="list-unstyled">
|
||
<li class="mb-2"><a href="community.html" class="footer-link">Сообщество</a></li>
|
||
<li class="mb-2"><a href="https://github.com/phantom-protocol/discussions" target="_blank" class="footer-link">Обсуждения</a></li>
|
||
<li class="mb-2"><a href="https://t.me/PhantomProtocol" target="_blank" class="footer-link">Telegram</a></li>
|
||
<li class="mb-2"><a href="https://discord.gg/phantom" target="_blank" class="footer-link">Discord</a></li>
|
||
</ul>
|
||
</div>
|
||
|
||
<!-- Колонка 5: О проекте -->
|
||
<div class="col-lg-2 col-md-6">
|
||
<h6 class="mb-3">О проекте</h6>
|
||
<ul class="list-unstyled">
|
||
<li class="mb-2"><a href="about.html" class="footer-link">О нас</a></li>
|
||
<li class="mb-2"><a href="https://github.com/phantom-protocol/phantom/blob/main/LICENSE" target="_blank" class="footer-link">Лицензия MIT</a></li>
|
||
<li class="mb-2"><a href="https://github.com/phantom-protocol/phantom/blob/main/CONTRIBUTING.md" target="_blank" class="footer-link">Контрибуция</a></li>
|
||
<li class="mb-2"><a href="about.html" class="footer-link">Контакты</a></li>
|
||
</ul>
|
||
</div>
|
||
</div>
|
||
|
||
<hr class="my-4">
|
||
|
||
<!-- Footer Bottom -->
|
||
<div class="footer-bottom">
|
||
<div class="row align-items-center">
|
||
<div class="col-md-6">
|
||
<p class="mb-0">© 2025 Phantom Protocol. Open Source под лицензией MIT.</p>
|
||
</div>
|
||
<div class="col-md-6 text-md-end">
|
||
<p class="mb-0">
|
||
<i class="fas fa-code"></i> Сделано с <i class="fas fa-heart text-danger"></i> для открытого интернета
|
||
</p>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</div>
|
||
</footer>
|
||
|
||
<!-- jQuery -->
|
||
<script src="https://code.jquery.com/jquery-3.7.1.min.js"></script>
|
||
|
||
<!-- Bootstrap Bundle -->
|
||
<script src="https://cdn.jsdelivr.net/npm/bootstrap@5.3.2/dist/js/bootstrap.bundle.min.js"></script>
|
||
|
||
<!-- Prism.js -->
|
||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/prism.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-bash.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-json.min.js"></script>
|
||
<script src="https://cdn.jsdelivr.net/npm/prismjs@1.29.0/components/prism-python.min.js"></script>
|
||
|
||
<!-- Main JavaScript -->
|
||
<script src="js/background.js" defer></script>
|
||
<script src="js/main.js" defer></script>
|
||
</body>
|
||
</html> |