Compare commits
198 commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
85b0d31b29 | ||
|
|
499100810a | ||
|
|
69bd604279 | ||
|
|
943915a242 | ||
|
|
7c8be59f2c | ||
|
|
b9371fbdfd | ||
|
|
4133983ac9 | ||
|
|
68a38ffd95 | ||
|
|
eca3183512 | ||
|
|
abde978f06 | ||
|
|
084a4fa41f | ||
|
|
efb90c21f9 | ||
|
|
e5d35e264b | ||
|
|
3e333f3fd0 | ||
|
|
8cc75b292b | ||
|
|
7aa14208a3 | ||
|
|
4a5a6fd53e | ||
|
|
6e2af5717e | ||
|
|
09dbd77cc0 | ||
|
|
6e9fc22c34 | ||
|
|
162897a157 | ||
|
|
dca987df03 | ||
|
|
ea7c42cf58 | ||
|
|
8787884b5e | ||
|
|
f93ff966b6 | ||
|
|
8977f39233 | ||
|
|
500047eb0c | ||
|
|
9f85b22148 | ||
|
|
1d6dfd83d8 | ||
|
|
42901cd481 | ||
|
|
1336ce38ab | ||
|
|
2c03ef82de | ||
|
|
ac66c8f8a5 | ||
|
|
a667057606 | ||
|
|
0940275129 | ||
|
|
067baa6235 | ||
|
|
a223f6cb93 | ||
|
|
b6232cfc8c | ||
|
|
89c6258840 | ||
|
|
5c6c08db00 | ||
|
|
296e36e92a | ||
|
|
b5326deec6 | ||
|
|
95ada1f315 | ||
|
|
f3b6324528 | ||
|
|
d5421520e8 | ||
|
|
0e6d3f5c0f | ||
|
|
247a0b7a49 | ||
|
|
3aa5083fdc | ||
|
|
7e2566b493 | ||
|
|
4eef89c2b0 | ||
|
|
2a9318a252 | ||
|
|
f2d7606aba | ||
|
|
5bfbbe163b | ||
|
|
72cc64f624 | ||
|
|
ea0fab628f | ||
|
|
0fc060fb05 | ||
|
|
f68f90fccc | ||
|
|
5917c1e042 | ||
|
|
34856ab44b | ||
|
|
2f28fe71a4 | ||
|
|
bfbdeea795 | ||
|
|
08539597ec | ||
|
|
de79772ff9 | ||
|
|
0faf41fb8e | ||
|
|
995bdaf245 | ||
|
|
84137bfb9e | ||
|
|
2e65882044 | ||
|
|
5cd1708686 | ||
|
|
151ce03d23 | ||
|
|
7d5678cd28 | ||
|
|
51458e1815 | ||
|
|
fb74cca592 | ||
|
|
983b2604f3 | ||
|
|
b96f062636 | ||
|
|
89141baa99 | ||
|
|
c102d384ff | ||
|
|
c0eabc832b | ||
|
|
3ad12260ac | ||
|
|
3f368edc70 | ||
|
|
38e80ff8a0 | ||
|
|
a225143ddb | ||
|
|
f56c74a223 | ||
|
|
d882d1c23f | ||
|
|
e33ff0988c | ||
|
|
e3a4dd1193 | ||
|
|
b666f43524 | ||
|
|
93234589a5 | ||
|
|
d1aad72af6 | ||
|
|
32e44c2f2a | ||
|
|
8fe55a2a9b | ||
|
|
093237aecb | ||
|
|
110c15792c | ||
|
|
2b5ccdf6e9 | ||
|
|
1bf25d3878 | ||
|
|
4cf024c44b | ||
|
|
92bb628a2b | ||
|
|
3defd1b68c | ||
|
|
2b94fb29a0 | ||
|
|
a169f1d93b | ||
|
|
2971f77133 | ||
|
|
7bdb79d6fb | ||
|
|
2d76ec5f9d | ||
|
|
3d20707b82 | ||
|
|
1a4d7b240f | ||
|
|
2fe74f29b6 | ||
|
|
f178c2f070 | ||
|
|
864d4b4a37 | ||
|
|
ab1a1d185e | ||
|
|
d6510de899 | ||
|
|
350e1367d9 | ||
|
|
b70a908985 | ||
|
|
fc134297e1 | ||
|
|
6b61409307 | ||
|
|
2a74b54573 | ||
|
|
d13d4c192a | ||
|
|
fdd69290da | ||
|
|
a5df0a4c0b | ||
|
|
d861d5cf7c | ||
|
|
3e26444267 | ||
|
|
56bc006f13 | ||
|
|
109362204e | ||
|
|
908710b4c9 | ||
|
|
98606932e7 | ||
|
|
d36ef1c3ff | ||
|
|
35c70cff23 | ||
|
|
3aa754ed08 | ||
|
|
639c35b51c | ||
|
|
bba9f003a7 | ||
|
|
875b8d0bf9 | ||
|
|
916cebb284 | ||
|
|
3ff80ac2e3 | ||
|
|
cacba81048 | ||
|
|
9c9169ed0f | ||
|
|
2b23718ddb | ||
|
|
7736c19c02 | ||
|
|
210ce287ef | ||
|
|
0d400c3134 | ||
|
|
897eb490f9 | ||
|
|
d110a106ad | ||
|
|
7694bdad22 | ||
|
|
19462698c9 | ||
|
|
393a30bbd7 | ||
|
|
d4142fc6c6 | ||
|
|
8093be30e3 | ||
|
|
6aa62d2f0a | ||
|
|
9cd3c78467 | ||
|
|
c6f7a880ea | ||
|
|
2ceefe9681 | ||
|
|
c466b30e01 | ||
|
|
b656d4b583 | ||
|
|
5739928459 | ||
|
|
8c92fe279a | ||
|
|
27b77363af | ||
|
|
345a0bb984 | ||
|
|
07b44c5b8c | ||
|
|
8ec3ab370c | ||
|
|
ef05a186c6 | ||
|
|
598dd2f751 | ||
|
|
2c2f4620d9 | ||
|
|
c18c7aab78 | ||
|
|
c07c4508c1 | ||
|
|
ac81947f93 | ||
|
|
169ce6c3a1 | ||
|
|
d4a369ae1b | ||
|
|
77ecfa463b | ||
|
|
bac3052d95 | ||
|
|
3db5728cc3 | ||
|
|
f30ce7c820 | ||
|
|
f0cfd0135a | ||
|
|
946d8d695c | ||
|
|
3f16bc36e7 | ||
|
|
756ce75ad7 | ||
|
|
3b5370651e | ||
|
|
836484ff17 | ||
|
|
2d82228b01 | ||
|
|
cfb2173763 | ||
|
|
240bbdedd1 | ||
|
|
3e526901b5 | ||
|
|
4214de9a83 | ||
|
|
a029108f86 | ||
|
|
e37056b063 | ||
|
|
413c7ffb02 | ||
|
|
4f6c3eac2b | ||
|
|
f900a502d0 | ||
|
|
b8fed307dc | ||
|
|
2947eccc1e | ||
|
|
625e10640f | ||
|
|
22fbeb2575 | ||
|
|
6dfbd6c9c6 | ||
|
|
067c0a66f1 | ||
|
|
6af84c8ad1 | ||
|
|
aab20f0b3b | ||
|
|
92ce805b9c | ||
|
|
8afa8dd3d3 | ||
|
|
340d98a9b7 | ||
|
|
61ed682b7f | ||
|
|
d193f6e1b2 | ||
|
|
1af0d789a1 |
25 changed files with 7458 additions and 3706 deletions
3
.github/FUNDING.yml
vendored
Normal file
3
.github/FUNDING.yml
vendored
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
# These are supported funding model platforms
|
||||
|
||||
open_collective: carlos61
|
||||
6
.gitignore
vendored
6
.gitignore
vendored
|
|
@ -1,2 +1,4 @@
|
|||
/node_modules
|
||||
pnpm-lock.yaml
|
||||
docs/.vitepress/dist
|
||||
docs/.vitepress/cache
|
||||
node_modules
|
||||
tbd.md
|
||||
|
|
@ -1,31 +1,36 @@
|
|||
|
||||
### Adult Hosts
|
||||
|
||||
| **Service Name** | **AllDebrid** | **TorBox** | **Premiumize** | **RealDebrid** | **Debrid-Link** | **LinkSnappy** | **Mega-Debrid** | **Deepbrid** | **High-Way** |
|
||||
| **Service Name** | **AllDebrid** | **RealDebrid** | **TorBox** | **Deepbrid** | **Premiumize** | **Mega-Debrid** | **High-Way** | **LinkSnappy** | **Debrid-Link** |
|
||||
| :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- | :--- |
|
||||
| **Beeg** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Coomer** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Drtuber** | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Hanime** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Hentai foundry** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Kemono** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Nhentai** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Pornhub** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Redgifs** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Redtube** | ✅ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ✅ | ❌ |
|
||||
| **Rule34** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Spankbang** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Stripchat** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Sunporno** | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
|
||||
| **Xhamster** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Xnxx** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Xvideos** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Xxxymovies** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Youjizz** | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Youporn** | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Total = 20** | **10/20** | **20/20** | **1/20** | **2/20** | **0/20** | **0/20** | **1/20** | **1/20** | **0/20** |
|
||||
| Beeg | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Coomer | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Drtuber | ✅ | ❌ | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Eporner | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Hanime | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Hentai foundry | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Kemono | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Nhentai | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Pornhub | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Pornoxo | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Redgifs | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Redtube | ✅ | ✅ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Rule34 | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Spankbang | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Stripchat | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Sunporno | ✅ | ❌ | ✅ | ❌ | ❌ | ✅ | ❌ | ❌ | ❌ |
|
||||
| Xhamster | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Xnxx | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Xvideos | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Xxxymovies | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Youjizz | ✅ | ❌ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| Youporn | ❌ | ✅ | ✅ | ❌ | ❌ | ❌ | ❌ | ❌ | ❌ |
|
||||
| **Total = 22** | **12/22** | **2/22** | **20/22** | **1/22** | **1/22** | **1/22** | **0/22** | **0/22** | **0/22** |
|
||||
|
||||
> Last Update: September 10, 2025
|
||||
> **Last updated: March 9, 2026**
|
||||
|
||||
<div align="center">
|
||||
|
||||
### [Back to home](./README.md)
|
||||
### [Back to home](./README.md)
|
||||
|
||||
</div>
|
||||
21
LICENSE
Normal file
21
LICENSE
Normal file
|
|
@ -0,0 +1,21 @@
|
|||
MIT License
|
||||
|
||||
Copyright (c) 2025 Fynks
|
||||
|
||||
Permission is hereby granted, free of charge, to any person obtaining a copy
|
||||
of this software and associated documentation files (the "Software"), to deal
|
||||
in the Software without restriction, including without limitation the rights
|
||||
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
||||
copies of the Software, and to permit persons to whom the Software is
|
||||
furnished to do so, subject to the following conditions:
|
||||
|
||||
The above copyright notice and this permission notice shall be included in all
|
||||
copies or substantial portions of the Software.
|
||||
|
||||
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
||||
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
||||
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
||||
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
||||
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
||||
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
||||
SOFTWARE.
|
||||
4
dist/.well-known/security.txt
vendored
Normal file
4
dist/.well-known/security.txt
vendored
Normal file
|
|
@ -0,0 +1,4 @@
|
|||
Contact: https://github.com/fynks/debrid-services-comparison/issues
|
||||
Expires: 2026-12-31T23:59:59.000Z
|
||||
Preferred-Languages: en
|
||||
Canonical: https://debridcompare.pages.dev/.well-known/security.txt
|
||||
2
dist/_redirects
vendored
2
dist/_redirects
vendored
|
|
@ -1,2 +0,0 @@
|
|||
http://www.debridcompare.pages.dev/* https://debridcompare.pages.dev/:splat 301!
|
||||
https://www.debridcompare.pages.dev/* https://debridcompare.pages.dev/:splat 301!
|
||||
11
dist/browserconfig.xml
vendored
Normal file
11
dist/browserconfig.xml
vendored
Normal file
|
|
@ -0,0 +1,11 @@
|
|||
<?xml version="1.0" encoding="utf-8"?>
|
||||
<browserconfig>
|
||||
<msapplication>
|
||||
<tile>
|
||||
<square70x70logo src="/images/favicon-32x32.png"/>
|
||||
<square150x150logo src="/images/apple-touch-icon.png"/>
|
||||
<square310x310logo src="/images/apple-touch-icon.png"/>
|
||||
<TileColor>#2563eb</TileColor>
|
||||
</tile>
|
||||
</msapplication>
|
||||
</browserconfig>
|
||||
4298
dist/css/styles.css
vendored
4298
dist/css/styles.css
vendored
File diff suppressed because it is too large
Load diff
BIN
dist/image.png
vendored
BIN
dist/image.png
vendored
Binary file not shown.
|
Before Width: | Height: | Size: 321 KiB |
99
dist/images/flowchart.svg
vendored
Normal file
99
dist/images/flowchart.svg
vendored
Normal file
|
|
@ -0,0 +1,99 @@
|
|||
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 800 930" style="max-width: 800px;">
|
||||
<defs>
|
||||
<style>
|
||||
/* Light mode (default) */
|
||||
.box { fill: #fff; stroke: #333; stroke-width: 2; }
|
||||
.diamond { fill: #fff; stroke: #333; stroke-width: 2; }
|
||||
.text { font-family: Arial, sans-serif; font-size: 14px; text-anchor: middle; fill: #333; }
|
||||
.arrow { stroke: #333; stroke-width: 2; fill: none; marker-end: url(#arrowhead-light); }
|
||||
.label { font-family: Arial, sans-serif; font-size: 12px; text-anchor: middle; fill: #333; }
|
||||
#arrowhead-light { display: block; }
|
||||
#arrowhead-dark { display: none; }
|
||||
|
||||
/* Dark mode */
|
||||
@media (prefers-color-scheme: dark) {
|
||||
.box { fill: #1c1c1c; stroke: #8b949e; stroke-width: 2; }
|
||||
.diamond { fill: #1c1c1c; stroke: #8b949e; stroke-width: 2; }
|
||||
.text { fill: #c9d1d9; }
|
||||
.arrow { stroke: #8b949e; marker-end: url(#arrowhead-dark); }
|
||||
.label { fill: #8b949e; }
|
||||
#arrowhead-light { display: none; }
|
||||
#arrowhead-dark { display: block; }
|
||||
}
|
||||
</style>
|
||||
<marker id="arrowhead-light" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
||||
<polygon points="0 0, 10 3, 0 6" fill="#333" />
|
||||
</marker>
|
||||
<marker id="arrowhead-dark" markerWidth="10" markerHeight="10" refX="9" refY="3" orient="auto">
|
||||
<polygon points="0 0, 10 3, 0 6" fill="#8b949e" />
|
||||
</marker>
|
||||
</defs>
|
||||
|
||||
<!-- Node A -->
|
||||
<rect x="250" y="20" width="300" height="60" rx="5" class="box"/>
|
||||
<text x="400" y="55" class="text">User provides file link or torrent</text>
|
||||
|
||||
<!-- Arrow A to B -->
|
||||
<path d="M 400 80 L 400 130" class="arrow"/>
|
||||
|
||||
<!-- Node B (Diamond) -->
|
||||
<path d="M 400 130 L 500 180 L 400 230 L 300 180 Z" class="diamond"/>
|
||||
<text x="400" y="180" class="text">File on supported</text>
|
||||
<text x="400" y="195" class="text">host?</text>
|
||||
|
||||
<!-- Arrow B to C -->
|
||||
<path d="M 400 230 L 400 270" class="arrow"/>
|
||||
<text x="430" y="255" class="label">Yes</text>
|
||||
|
||||
<!-- Node C -->
|
||||
<rect x="275" y="270" width="250" height="60" rx="5" class="box"/>
|
||||
<text x="400" y="305" class="text">Debrid service fetches file</text>
|
||||
|
||||
<!-- Arrow C to D -->
|
||||
<path d="M 400 330 L 400 370" class="arrow"/>
|
||||
|
||||
<!-- Node D -->
|
||||
<rect x="250" y="370" width="300" height="60" rx="5" class="box"/>
|
||||
<text x="400" y="405" class="text">File cached on high-speed servers</text>
|
||||
|
||||
<!-- Arrow D to E -->
|
||||
<path d="M 400 430 L 400 480" class="arrow"/>
|
||||
|
||||
<!-- Node E (Diamond) -->
|
||||
<path d="M 400 480 L 500 530 L 400 580 L 300 530 Z" class="diamond"/>
|
||||
<text x="400" y="530" class="text">Stream or</text>
|
||||
<text x="400" y="545" class="text">download?</text>
|
||||
|
||||
<!-- Arrow E to F (Stream) -->
|
||||
<path d="M 300 530 L 150 530 L 150 650" class="arrow"/>
|
||||
<text x="200" y="525" class="label">Stream</text>
|
||||
|
||||
<!-- Arrow E to G (Download) -->
|
||||
<path d="M 500 530 L 650 530 L 650 650" class="arrow"/>
|
||||
<text x="600" y="525" class="label">Download</text>
|
||||
|
||||
<!-- Node F -->
|
||||
<rect x="25" y="650" width="250" height="60" rx="5" class="box"/>
|
||||
<text x="150" y="685" class="text">Direct streaming link provided</text>
|
||||
|
||||
<!-- Node G -->
|
||||
<rect x="525" y="650" width="250" height="60" rx="5" class="box"/>
|
||||
<text x="650" y="685" class="text">High-speed download link provided</text>
|
||||
|
||||
<!-- Arrow F to H -->
|
||||
<path d="M 150 710 L 150 750 L 400 750" class="arrow"/>
|
||||
|
||||
<!-- Arrow G to H -->
|
||||
<path d="M 650 710 L 650 750 L 400 750" class="arrow"/>
|
||||
|
||||
<!-- Node H -->
|
||||
<rect x="275" y="750" width="250" height="60" rx="5" class="box"/>
|
||||
<text x="400" y="785" class="text">Access file instantly</text>
|
||||
|
||||
<!-- Arrow H to I -->
|
||||
<path d="M 400 810 L 400 850" class="arrow"/>
|
||||
|
||||
<!-- Node I -->
|
||||
<rect x="250" y="850" width="300" height="60" rx="5" class="box"/>
|
||||
<text x="400" y="885" class="text">File cached for 24-72 hours</text>
|
||||
</svg>
|
||||
|
After Width: | Height: | Size: 3.8 KiB |
BIN
dist/images/og.png
vendored
Normal file
BIN
dist/images/og.png
vendored
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 438 KiB |
2069
dist/index.html
vendored
2069
dist/index.html
vendored
File diff suppressed because it is too large
Load diff
3358
dist/js/app.js
vendored
3358
dist/js/app.js
vendored
File diff suppressed because it is too large
Load diff
2
dist/json/adult-hosts.json
vendored
2
dist/json/adult-hosts.json
vendored
|
|
@ -1 +1 @@
|
|||
{"Beeg":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Coomer":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Drtuber":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"yes","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Hanime":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Hentai foundry":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Kemono":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Nhentai":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Pornhub":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Redgifs":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Redtube":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"yes","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"yes","High-Way":"no"},"Rule34":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Spankbang":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Stripchat":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Sunporno":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"yes","Deepbrid":"no","High-Way":"no"},"Xhamster":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Xnxx":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Xvideos":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Xxxymovies":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Youjizz":{"AllDebrid":"yes","TorBox":"yes","Premiumize":"no","RealDebrid":"no","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"},"Youporn":{"AllDebrid":"no","TorBox":"yes","Premiumize":"no","RealDebrid":"yes","Debrid-Link":"no","LinkSnappy":"no","Mega-Debrid":"no","Deepbrid":"no","High-Way":"no"}}
|
||||
{"Beeg":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Coomer":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Drtuber":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"✅","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Eporner":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"❌","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Hanime":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Hentai foundry":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Kemono":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Nhentai":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Pornhub":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Pornoxo":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"❌","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Redgifs":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Redtube":{"AllDebrid":"✅","RealDebrid":"✅","TorBox":"✅","Deepbrid":"✅","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Rule34":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Spankbang":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Stripchat":{"AllDebrid":"❌","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Sunporno":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"✅","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Xhamster":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Xnxx":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Xvideos":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Xxxymovies":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Youjizz":{"AllDebrid":"✅","RealDebrid":"❌","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"},"Youporn":{"AllDebrid":"❌","RealDebrid":"✅","TorBox":"✅","Deepbrid":"❌","Premiumize":"❌","Mega-Debrid":"❌","High-Way":"❌","LinkSnappy":"❌","Debrid-Link":"❌"}}
|
||||
2
dist/json/file-hosts.json
vendored
2
dist/json/file-hosts.json
vendored
File diff suppressed because one or more lines are too long
1
dist/json/pricing.json
vendored
1
dist/json/pricing.json
vendored
|
|
@ -1 +0,0 @@
|
|||
{"plans":[{"name":"Free/Trial","AllDebrid":"7 days*","Premiumize":"-","Real-Debrid":"-","TorBox":"$0/month","Debrid-Link":"-","Linksnappy":"-","Mega-Debrid":"-","Deepbrid":"Limited Hosts"},{"name":"7 Days","AllDebrid":"-","Premiumize":"-","Real-Debrid":"-","TorBox":"-","Debrid-Link":"-","Linksnappy":"$4.99 USD","Mega-Debrid":"-","Deepbrid":"-"},{"name":"15 Days","AllDebrid":"€2.99","Premiumize":"-","Real-Debrid":"€3","TorBox":"-","Debrid-Link":"€3","Linksnappy":"-","Mega-Debrid":"-","Deepbrid":"€4.50"},{"name":"30 Days","AllDebrid":"€2.99/mo (Recur) / €3.99 (One-time)","Premiumize":"€11.99","Real-Debrid":"€4","TorBox":"Starts from $3.0","Debrid-Link":"€4","Linksnappy":"$12.99 USD","Mega-Debrid":"€4","Deepbrid":"€4.99"},{"name":"90 Days","AllDebrid":"€8.99(One-time)","Premiumize":"$29.99","Real-Debrid":"€9","TorBox":"-","Debrid-Link":"€9","Linksnappy":"$29.99 USD","Mega-Debrid":"€9","Deepbrid":"€12.99"},{"name":"180 Days","AllDebrid":"€15.99(One-time)","Premiumize":"-","Real-Debrid":"€16","TorBox":"-","Debrid-Link":"€16","Linksnappy":"$54.99","Mega-Debrid":"€16","Deepbrid":"€19.99"},{"name":"300 Days","AllDebrid":"€24.99(One-time)","Premiumize":"-","Real-Debrid":"-","TorBox":"-","Debrid-Link":"€25","Linksnappy":"-","Mega-Debrid":"-","Deepbrid":"-"},{"name":"365 Days","AllDebrid":"-","Premiumize":"$79.99","Real-Debrid":"-","TorBox":"-","Debrid-Link":"-","Linksnappy":"-","Mega-Debrid":"-","Deepbrid":"€32.99"}]}
|
||||
25
dist/manifest.json
vendored
Normal file
25
dist/manifest.json
vendored
Normal file
|
|
@ -0,0 +1,25 @@
|
|||
{
|
||||
"name": "Debrid Compare",
|
||||
"short_name": "DSC",
|
||||
"start_url": "https://debridcompare.pages.dev",
|
||||
"display": "standalone",
|
||||
"description": "Compare leading debrid / multi-hoster services for pricing, host coverage, policies & tools.",
|
||||
"lang": "en",
|
||||
"dir": "auto",
|
||||
"theme_color": "#ffffff",
|
||||
"background_color": "#ffffff",
|
||||
"orientation": "any",
|
||||
"icons": [
|
||||
{
|
||||
"src": "images/android-chrome-192x192.png",
|
||||
"sizes": "192x192",
|
||||
"type": "image/png"
|
||||
},
|
||||
{
|
||||
"src": "images/android-chrome-512x512.png",
|
||||
"sizes": "512x512",
|
||||
"type": "image/png"
|
||||
}
|
||||
]
|
||||
|
||||
}
|
||||
4
dist/robots.txt
vendored
4
dist/robots.txt
vendored
|
|
@ -1,4 +1,4 @@
|
|||
User-agent: *
|
||||
Disallow:
|
||||
Disallow: /cgi-bin/
|
||||
Allow: /
|
||||
|
||||
Sitemap: https://debridcompare.pages.dev/sitemap.xml
|
||||
|
|
|
|||
1
dist/site.webmanifest
vendored
1
dist/site.webmanifest
vendored
|
|
@ -1 +0,0 @@
|
|||
{"name":"","short_name":"","icons":[{"src":"images/android-chrome-192x192.png","sizes":"192x192","type":"image/png"},{"src":"images/android-chrome-512x512.png","sizes":"512x512","type":"image/png"}],"theme_color":"#ffffff","background_color":"#ffffff","display":"standalone"}
|
||||
20
dist/sitemap.xml
vendored
20
dist/sitemap.xml
vendored
|
|
@ -1,15 +1,7 @@
|
|||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9"
|
||||
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
|
||||
xsi:schemaLocation="http://www.sitemaps.org/schemas/sitemap/0.9
|
||||
http://www.sitemaps.org/schemas/sitemap/0.9/sitemap.xsd">
|
||||
|
||||
<!-- Homepage -->
|
||||
<url>
|
||||
<loc>https://debridcompare.pages.dev/</loc>
|
||||
<lastmod>2025-09-07T00:00:00+00:00</lastmod>
|
||||
<changefreq>weekly</changefreq>
|
||||
<priority>1.0</priority>
|
||||
</url>
|
||||
|
||||
</urlset>
|
||||
<urlset xmlns="http://www.sitemaps.org/schemas/sitemap/0.9">
|
||||
<url>
|
||||
<loc>https://debridcompare.pages.dev/</loc>
|
||||
<lastmod>2026-03-22</lastmod>
|
||||
</url>
|
||||
</urlset>
|
||||
|
|
|
|||
11
package.json
11
package.json
|
|
@ -3,22 +3,23 @@
|
|||
"version": "2.0.1",
|
||||
"description": "A concise comparison of pricing and supported hosts for popular debrid services including AllDebrid, Real-Debrid, LinkSnappy, Premiumize, Debrid-Link, TorBox, and Mega-Debrid.",
|
||||
"main": "index.js",
|
||||
"homepage": "",
|
||||
"homepage": "https://debridcompare.pages.dev/",
|
||||
"repository": {
|
||||
"type": "git",
|
||||
"url": ""
|
||||
"url": "https://github.com/fynks/debrid-services-comparison"
|
||||
},
|
||||
"scripts": {
|
||||
"minify:css": "cleancss -o dist/css/styles-min.css dist/css/styles.css",
|
||||
"minify:js": "terser dist/js/app.js -o dist/js/app-min.js --compress --mangle",
|
||||
"optimize-json": "chmod +x scripts/json-optimizer.sh && scripts/json-optimizer.sh dist/json/file-hosts.json dist/json/file-hosts-optimized.json && scripts/json-optimizer.sh dist/json/adult-hosts.json dist/json/adult-hosts-optimized.json",
|
||||
"build": "npm run minify:css && npm run minify:js && npm run optimize-json && workbox generateSW workbox-config.js",
|
||||
"prune-json": "rm -f dist/json/file-hosts.json dist/json/adult-hosts.json",
|
||||
"build": "npm run minify:css && npm run minify:js && npm run optimize-json && npm run prune-json && workbox generateSW workbox-config.js",
|
||||
"postbuild": "node scripts/replace-assets.js"
|
||||
},
|
||||
"author": "fynks",
|
||||
"dependencies": {
|
||||
"clean-css-cli": "^5.6.3",
|
||||
"terser": "^5.44.0",
|
||||
"workbox-cli": "^7.3.0"
|
||||
"terser": "^5.46.0",
|
||||
"workbox-cli": "^7.4.0"
|
||||
}
|
||||
}
|
||||
|
|
@ -1,9 +1,9 @@
|
|||
#!/bin/bash
|
||||
|
||||
# JSON Optimizer Script - Converts host data to indexed format
|
||||
# Converts ✅/❌ format to compact indexed format for better performance
|
||||
# Usage: ./scripts/json-optimizer.sh file-hosts.json
|
||||
# ./scripts/json-optimizer.sh adult-hosts.json
|
||||
# ./scripts/json-optimizer.sh pricing.json
|
||||
|
||||
# Colors for output
|
||||
RED='\033[0;31m'
|
||||
|
|
@ -41,7 +41,7 @@ if [ $# -eq 0 ]; then
|
|||
echo "Examples:"
|
||||
echo " $0 file-hosts.json"
|
||||
echo " $0 ./json/adult-hosts.json"
|
||||
echo " $0 pricing.json pricing-optimized.json"
|
||||
echo " $0 ./json/file-hosts.json file-hosts-optimized.json"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
|
|
@ -118,11 +118,11 @@ def convert_to_indexed_format(input_file, output_file):
|
|||
total_support_instances = 0
|
||||
|
||||
for host, host_data in data.items():
|
||||
# Get indices of services with 'yes' values (case insensitive)
|
||||
# Get indices of services with '✅' values (new format)
|
||||
supported_indices = [
|
||||
service_to_index[service]
|
||||
for service, value in host_data.items()
|
||||
if str(value).lower() == 'yes'
|
||||
if str(value) == '✅'
|
||||
]
|
||||
supported[host] = sorted(supported_indices)
|
||||
total_support_instances += len(supported_indices)
|
||||
|
|
|
|||
|
|
@ -29,35 +29,50 @@ function replaceAssets() {
|
|||
let cssReplaced = 0;
|
||||
let jsReplaced = 0;
|
||||
|
||||
// Replace CSS links in head - more flexible patterns
|
||||
const cssPatterns = [
|
||||
/href=["']\.\/css\/styles\.css["']/g,
|
||||
/href=["']css\/styles\.css["']/g,
|
||||
/href=["'][^"']*\/styles\.css["']/g
|
||||
];
|
||||
|
||||
cssPatterns.forEach(pattern => {
|
||||
const matches = updatedHeadContent.match(pattern);
|
||||
if (matches) {
|
||||
updatedHeadContent = updatedHeadContent.replace(pattern, 'href="./css/styles-min.css"');
|
||||
cssReplaced += matches.length;
|
||||
// Compute simple query hash for cache-busting if files exist
|
||||
const cssMinPath = path.resolve(__dirname, '..', 'dist', 'css', 'styles-min.css');
|
||||
const jsMinPath = path.resolve(__dirname, '..', 'dist', 'js', 'app-min.js');
|
||||
const safeHash = (p) => {
|
||||
try {
|
||||
const buf = fs.readFileSync(p);
|
||||
let hash = 0;
|
||||
for (let i = 0; i < buf.length; i += Math.ceil(buf.length / 128) || 1) {
|
||||
hash = (hash * 31 + buf[i]) >>> 0;
|
||||
}
|
||||
return hash.toString(36);
|
||||
} catch {
|
||||
return null;
|
||||
}
|
||||
});
|
||||
};
|
||||
const cssHash = safeHash(cssMinPath);
|
||||
const jsHash = safeHash(jsMinPath);
|
||||
const cssTarget = cssHash ? `href="/css/styles-min.css?v=${cssHash}"` : 'href="/css/styles-min.css"';
|
||||
const jsTarget = jsHash ? `src="/js/app-min.js?v=${jsHash}"` : 'src="/js/app-min.js"';
|
||||
|
||||
// Replace JS script src in head - more flexible patterns
|
||||
const jsPatterns = [
|
||||
/src=["']\.\/js\/app\.js["']/g,
|
||||
/src=["']js\/app\.js["']/g,
|
||||
/src=["'][^"']*\/app\.js["']/g
|
||||
];
|
||||
// Normalize all stylesheet/script/preload references to minified assets with one hash.
|
||||
const cssHrefPattern = /href=["'](?:\.\/|\/)?css\/(?:styles|styles-min)\.css(?:\?[^"']*)?["']/g;
|
||||
const jsSrcPattern = /src=["'](?:\.\/|\/)?js\/(?:app|app-min)\.js(?:\?[^"']*)?["']/g;
|
||||
const jsHrefPattern = /href=["'](?:\.\/|\/)?js\/(?:app|app-min)\.js(?:\?[^"']*)?["']/g;
|
||||
|
||||
jsPatterns.forEach(pattern => {
|
||||
const matches = updatedHeadContent.match(pattern);
|
||||
if (matches) {
|
||||
updatedHeadContent = updatedHeadContent.replace(pattern, 'src="js/app-min.js"');
|
||||
jsReplaced += matches.length;
|
||||
}
|
||||
});
|
||||
const cssMatches = updatedHeadContent.match(cssHrefPattern);
|
||||
if (cssMatches) {
|
||||
updatedHeadContent = updatedHeadContent.replace(cssHrefPattern, cssTarget);
|
||||
cssReplaced += cssMatches.length;
|
||||
}
|
||||
|
||||
const jsSrcHeadMatches = updatedHeadContent.match(jsSrcPattern);
|
||||
if (jsSrcHeadMatches) {
|
||||
updatedHeadContent = updatedHeadContent.replace(jsSrcPattern, jsTarget);
|
||||
jsReplaced += jsSrcHeadMatches.length;
|
||||
}
|
||||
|
||||
// Preload script links use href (not src), so normalize them too.
|
||||
const jsHrefHeadMatches = updatedHeadContent.match(jsHrefPattern);
|
||||
if (jsHrefHeadMatches) {
|
||||
const jsHrefTarget = jsHash ? `href="/js/app-min.js?v=${jsHash}"` : 'href="/js/app-min.js"';
|
||||
updatedHeadContent = updatedHeadContent.replace(jsHrefPattern, jsHrefTarget);
|
||||
jsReplaced += jsHrefHeadMatches.length;
|
||||
}
|
||||
|
||||
// Also check for script tags at the end of body (common pattern)
|
||||
const bodyMatch = html.match(/(<body[^>]*>)([\s\S]*?)(<\/body>)/i);
|
||||
|
|
@ -65,13 +80,11 @@ function replaceAssets() {
|
|||
const [fullBodyTag, bodyStart, bodyContent, bodyEnd] = bodyMatch;
|
||||
let updatedBodyContent = bodyContent;
|
||||
|
||||
jsPatterns.forEach(pattern => {
|
||||
const matches = updatedBodyContent.match(pattern);
|
||||
if (matches) {
|
||||
updatedBodyContent = updatedBodyContent.replace(pattern, 'src="js/app-min.js"');
|
||||
jsReplaced += matches.length;
|
||||
}
|
||||
});
|
||||
const jsSrcBodyMatches = updatedBodyContent.match(jsSrcPattern);
|
||||
if (jsSrcBodyMatches) {
|
||||
updatedBodyContent = updatedBodyContent.replace(jsSrcPattern, jsTarget);
|
||||
jsReplaced += jsSrcBodyMatches.length;
|
||||
}
|
||||
|
||||
// Reconstruct the body if changes were made
|
||||
if (updatedBodyContent !== bodyContent) {
|
||||
|
|
|
|||
|
|
@ -1,9 +1,8 @@
|
|||
module.exports = {
|
||||
// Base directory - still needed for SW generation
|
||||
globDirectory: "dist/",
|
||||
|
||||
// REMOVE globPatterns entirely - no precaching!
|
||||
// globPatterns: [], // Explicitly empty or just omit
|
||||
// Explicitly disable precaching for lean SW install
|
||||
globPatterns: [],
|
||||
|
||||
// Enhanced runtime caching strategies
|
||||
runtimeCaching: [
|
||||
|
|
@ -72,8 +71,8 @@ module.exports = {
|
|||
plugins: [
|
||||
{
|
||||
handlerDidError: async () => {
|
||||
// Return fallback image on error
|
||||
return caches.match('/assets/fallback-image.svg');
|
||||
// Return fallback image on error (use an existing icon)
|
||||
return caches.match('/favicon.svg');
|
||||
}
|
||||
}
|
||||
]
|
||||
|
|
@ -81,9 +80,9 @@ module.exports = {
|
|||
},
|
||||
|
||||
|
||||
// 5. JSON responses - NetworkFirst with timeout
|
||||
// 5. JSON responses (local and API) - NetworkFirst with timeout
|
||||
{
|
||||
urlPattern: /^https:\/\/api\.|\/api\/|\.json$/i,
|
||||
urlPattern: ({url}) => /\.json$/i.test(url.pathname) || /\/api\//i.test(url.pathname) || /^https:\/\/api\./i.test(url.href),
|
||||
handler: 'NetworkFirst',
|
||||
options: {
|
||||
cacheName: 'api-cache',
|
||||
|
|
@ -92,12 +91,7 @@ module.exports = {
|
|||
maxEntries: 100,
|
||||
maxAgeSeconds: 5 * 60 // 5 minutes for fresh API data
|
||||
},
|
||||
cacheableResponse: {
|
||||
statuses: [0, 200],
|
||||
headers: {
|
||||
'x-cache': 'hit' // Optional: only cache specific responses
|
||||
}
|
||||
},
|
||||
cacheableResponse: { statuses: [0, 200] },
|
||||
matchOptions: {
|
||||
ignoreSearch: false // Consider query params
|
||||
}
|
||||
|
|
|
|||
Loading…
Reference in a new issue