Compare commits
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
4ca7c28e77 | ||
|
|
a3e69d4b68 | ||
|
|
809d3ed5a2 |
@@ -0,0 +1 @@
|
||||
@sugoidogo:registry=https://gitea.sugoidogo.com/api/packages/sugoidogo/npm/
|
||||
Vendored
-98
@@ -1,98 +0,0 @@
|
||||
<h1>Sugoi Streamathon Timer</h1>
|
||||
<div id="status">Loading...</div>
|
||||
<br>
|
||||
<form id="config">
|
||||
<label>
|
||||
Starting Time:
|
||||
<input type="text" name="start-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="8:00:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="max-time-enabled" checked>
|
||||
Maximum Time:
|
||||
<input type="text" name="max-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="12:00:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="sub1000-time-enabled" checked>
|
||||
Time Per T1 Sub:
|
||||
<input type="text" name="sub1000-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="500" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="sub2000-time-enabled" checked>
|
||||
Time Per T2 Sub:
|
||||
<input type="text" name="sub2000-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1000" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="sub3000-time-enabled" checked>
|
||||
Time Per T3 Sub:
|
||||
<input type="text" name="sub3000-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="2500" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="bit-time-enabled" checked>
|
||||
Time Per Bit:
|
||||
<input type="text" name="bit-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="follow-time-enabled" checked>
|
||||
Time Per Follow:
|
||||
<input type="text" name="follow-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="raid-time-enabled" checked>
|
||||
Time Per Raid:
|
||||
<input type="text" name="raid-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="10:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="charity-time-enabled" checked>
|
||||
Time Per Charity Cent:
|
||||
<input type="text" name="charity-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1" required>
|
||||
</label>
|
||||
<br>
|
||||
<br>
|
||||
<label>
|
||||
StreamElements Overlay Token:
|
||||
<input type="text" name="streamelements-token">
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="tip-time-enabled" checked>
|
||||
Time Per Tip Cent:
|
||||
<input type="text" name="tip-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1">
|
||||
</label>
|
||||
<br>
|
||||
<br>
|
||||
<button type="submit">Save</button>
|
||||
<button type="reset">Defaults</button>
|
||||
<a id="timer-link" href="index.html" target="_blank">Browser Source</a>
|
||||
<div>
|
||||
<h3>Chat Commands for Moderators:</h3>
|
||||
!subathon start <br>
|
||||
!subathon pause <br>
|
||||
!subathon add 1:0:0 <br>
|
||||
!subathon reset
|
||||
</div>
|
||||
</form>
|
||||
<style>
|
||||
* {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
::placeholder {
|
||||
color: lightgray;
|
||||
}
|
||||
fieldset {
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
iframe {
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<script type="module" src="js/config.js"></script>
|
||||
Vendored
+97
-20
@@ -1,21 +1,98 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@600&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<title>Subathon Timer</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container" class="timer">
|
||||
<div id="textDiv">
|
||||
<p id="timeText">Loading...</p>
|
||||
<h1>Sugoi Streamathon Timer</h1>
|
||||
<div id="status">Loading...</div>
|
||||
<br>
|
||||
<form id="config">
|
||||
<label>
|
||||
Starting Time:
|
||||
<input type="text" name="start-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="8:00:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="max-time-enabled" checked>
|
||||
Maximum Time:
|
||||
<input type="text" name="max-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="12:00:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="sub1000-time-enabled" checked>
|
||||
Time Per T1 Sub:
|
||||
<input type="text" name="sub1000-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="500" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="sub2000-time-enabled" checked>
|
||||
Time Per T2 Sub:
|
||||
<input type="text" name="sub2000-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1000" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="sub3000-time-enabled" checked>
|
||||
Time Per T3 Sub:
|
||||
<input type="text" name="sub3000-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="2500" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="bit-time-enabled" checked>
|
||||
Time Per Bit:
|
||||
<input type="text" name="bit-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="follow-time-enabled" checked>
|
||||
Time Per Follow:
|
||||
<input type="text" name="follow-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="raid-time-enabled" checked>
|
||||
Time Per Raid:
|
||||
<input type="text" name="raid-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="10:00" required>
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="charity-time-enabled" checked>
|
||||
Time Per Charity Cent:
|
||||
<input type="text" name="charity-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1" required>
|
||||
</label>
|
||||
<br>
|
||||
<br>
|
||||
<label>
|
||||
StreamElements Overlay Token:
|
||||
<input type="text" name="streamelements-token">
|
||||
</label>
|
||||
<br>
|
||||
<label>
|
||||
<input type="checkbox" name="tip-time-enabled" checked>
|
||||
Time Per Tip Cent:
|
||||
<input type="text" name="tip-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="1">
|
||||
</label>
|
||||
<br>
|
||||
<br>
|
||||
<button type="submit">Save</button>
|
||||
<button type="reset">Defaults</button>
|
||||
<a id="timer-link" href="timer.html" target="_blank">Browser Source</a>
|
||||
<div>
|
||||
<h3>Chat Commands for Moderators:</h3>
|
||||
!subathon start <br>
|
||||
!subathon pause <br>
|
||||
!subathon add 1:0:0 <br>
|
||||
!subathon reset
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="js/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
</form>
|
||||
<style>
|
||||
* {
|
||||
font-family: sans-serif;
|
||||
}
|
||||
::placeholder {
|
||||
color: lightgray;
|
||||
}
|
||||
fieldset {
|
||||
border: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
}
|
||||
iframe {
|
||||
overflow: hidden;
|
||||
}
|
||||
</style>
|
||||
<script type="module" src="js/config.js"></script>
|
||||
Vendored
+21
@@ -0,0 +1,21 @@
|
||||
<!DOCTYPE html>
|
||||
<html lang="en">
|
||||
<head>
|
||||
<meta charset="UTF-8">
|
||||
<meta http-equiv="X-UA-Compatible" content="IE=edge">
|
||||
<meta name="viewport" content="width=device-width, initial-scale=1.0">
|
||||
<link rel="preconnect" href="https://fonts.googleapis.com">
|
||||
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
|
||||
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@600&display=swap" rel="stylesheet">
|
||||
<link rel="stylesheet" href="css/style.css">
|
||||
<title>Subathon Timer</title>
|
||||
</head>
|
||||
<body>
|
||||
<div id="container" class="timer">
|
||||
<div id="textDiv">
|
||||
<p id="timeText">Loading...</p>
|
||||
</div>
|
||||
</div>
|
||||
<script type="module" src="js/script.js"></script>
|
||||
</body>
|
||||
</html>
|
||||
Generated
+18
-13
@@ -5,12 +5,12 @@
|
||||
"packages": {
|
||||
"": {
|
||||
"dependencies": {
|
||||
"@sugoidogo/js-util": "^0.1.0",
|
||||
"@sugoidogo/twitch-cloud-ebs": "^1.2.0",
|
||||
"@twurple/api": "^7.2.1",
|
||||
"@twurple/eventsub-ws": "^7.2.1",
|
||||
"js-util": "https://gitea.sugoidogo.com/sugoidogo/js-util/releases/download/0.1.0/js-util.tgz",
|
||||
"localforage": "^1.10.0",
|
||||
"socket.io-client": "^4.8.1",
|
||||
"twitch-cloud-ebs": "https://gitea.sugoidogo.com/sugoidogo/twitch-cloud-ebs/releases/download/1.1.4/twitch-cloud-ebs.tgz"
|
||||
"socket.io-client": "^4.8.1"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/web": "^0.0.301",
|
||||
@@ -1177,11 +1177,22 @@
|
||||
"dev": true,
|
||||
"license": "CC0-1.0"
|
||||
},
|
||||
"node_modules/@sugoidogo/js-util": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://gitea.sugoidogo.com/api/packages/sugoidogo/npm/%40sugoidogo%2Fjs-util/-/0.1.0/js-util-0.1.0.tgz",
|
||||
"integrity": "sha512-RUFJ8ascVLDFdxXEjsZWGgl/QOCacOUUloAhR8X7ezuKZOYvRFCNpgmnWKhuCMYuKRmymLhP0LU1TUAc6V8uRA=="
|
||||
},
|
||||
"node_modules/@sugoidogo/twitch-cloud-ebs": {
|
||||
"version": "1.2.0",
|
||||
"resolved": "https://gitea.sugoidogo.com/api/packages/sugoidogo/npm/%40sugoidogo%2Ftwitch-cloud-ebs/-/1.2.0/twitch-cloud-ebs-1.2.0.tgz",
|
||||
"integrity": "sha512-tod/4nNVu49EmdO+Mqw86nFTnG3GGWV+nsStozPqxhs/96CcEH3K+BPSHvMlLgru7U5/k7vfcBTESkLFyVvtkA=="
|
||||
},
|
||||
"node_modules/@twurple/api": {
|
||||
"version": "7.2.1",
|
||||
"resolved": "https://registry.npmjs.org/@twurple/api/-/api-7.2.1.tgz",
|
||||
"integrity": "sha512-fqoX87GyHRL4pSmgloF5Mfj2XDJMx8fWBbcl4JGG7bgF2jvH5X9p3nzH169zqwSU/etfUdfytyoQ7/r2R+G3cg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@d-fischer/cache-decorators": "^4.0.0",
|
||||
"@d-fischer/cross-fetch": "^5.0.1",
|
||||
@@ -1223,6 +1234,7 @@
|
||||
"resolved": "https://registry.npmjs.org/@twurple/auth/-/auth-7.2.1.tgz",
|
||||
"integrity": "sha512-IGHsJ/g0RblRSBC59XKA9277rE5w1dAKdhCPQz1QwkWnt6fsUyVoD1ut+qZvjuh7ssX1SBtNzFqohydfmWZytg==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"@d-fischer/logger": "^4.2.1",
|
||||
"@d-fischer/shared-utils": "^3.6.1",
|
||||
@@ -1573,11 +1585,6 @@
|
||||
"dev": true,
|
||||
"license": "MIT"
|
||||
},
|
||||
"node_modules/js-util": {
|
||||
"version": "0.1.0",
|
||||
"resolved": "https://gitea.sugoidogo.com/sugoidogo/js-util/releases/download/0.1.0/js-util.tgz",
|
||||
"integrity": "sha512-QzZFMz4wMBShSbl7ulKpJ2piaOginxvAPvJZaVHoaGJxjr7/6jcxQoolzKmb75ZRiu7CasoEp2lZehLh0j6ccw=="
|
||||
},
|
||||
"node_modules/kleur": {
|
||||
"version": "4.1.5",
|
||||
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
|
||||
@@ -1831,11 +1838,6 @@
|
||||
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
|
||||
"license": "0BSD"
|
||||
},
|
||||
"node_modules/twitch-cloud-ebs": {
|
||||
"version": "0.0.0",
|
||||
"resolved": "https://gitea.sugoidogo.com/sugoidogo/twitch-cloud-ebs/releases/download/1.1.4/twitch-cloud-ebs.tgz",
|
||||
"integrity": "sha512-REgS2qwKbLI1Nxw8pH5SEKJcItQENFHUrtEX9PxPvIQhNxJTj3wdOrE1qo4PpecJkqvPSLYMMhIJsfy3rZsUgA=="
|
||||
},
|
||||
"node_modules/undici": {
|
||||
"version": "7.14.0",
|
||||
"resolved": "https://registry.npmjs.org/undici/-/undici-7.14.0.tgz",
|
||||
@@ -1858,6 +1860,7 @@
|
||||
"integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==",
|
||||
"dev": true,
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"dependencies": {
|
||||
"pathe": "^2.0.3"
|
||||
}
|
||||
@@ -1885,6 +1888,7 @@
|
||||
"dev": true,
|
||||
"hasInstallScript": true,
|
||||
"license": "Apache-2.0",
|
||||
"peer": true,
|
||||
"bin": {
|
||||
"workerd": "bin/workerd"
|
||||
},
|
||||
@@ -2423,6 +2427,7 @@
|
||||
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
|
||||
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
|
||||
"license": "MIT",
|
||||
"peer": true,
|
||||
"engines": {
|
||||
"node": ">=10.0.0"
|
||||
},
|
||||
|
||||
+5
-4
@@ -2,7 +2,8 @@
|
||||
"scripts": {
|
||||
"prepublish": "esbuild --outdir=dist/js --format=esm --bundle --minify --sourcemap --sources-content src/*",
|
||||
"publish": "wrangler pages deploy dist --project-name twitch-subathon-countdown --branch=sugoi",
|
||||
"test": "wrangler pages dev dist"
|
||||
"pretest": "npm run prepublish",
|
||||
"test": "wrangler pages dev dist --ip=localhost"
|
||||
},
|
||||
"devDependencies": {
|
||||
"@types/web": "^0.0.301",
|
||||
@@ -10,11 +11,11 @@
|
||||
"wrangler": "^4.54.0"
|
||||
},
|
||||
"dependencies": {
|
||||
"@sugoidogo/js-util": "^0.1.0",
|
||||
"@sugoidogo/twitch-cloud-ebs": "^1.2.0",
|
||||
"@twurple/api": "^7.2.1",
|
||||
"@twurple/eventsub-ws": "^7.2.1",
|
||||
"js-util": "https://gitea.sugoidogo.com/sugoidogo/js-util/releases/download/0.1.0/js-util.tgz",
|
||||
"localforage": "^1.10.0",
|
||||
"socket.io-client": "^4.8.1",
|
||||
"twitch-cloud-ebs": "https://gitea.sugoidogo.com/sugoidogo/twitch-cloud-ebs/releases/download/1.1.4/twitch-cloud-ebs.tgz"
|
||||
"socket.io-client": "^4.8.1"
|
||||
}
|
||||
}
|
||||
|
||||
+1
-1
@@ -5,7 +5,7 @@ onerror = function (error) {
|
||||
}
|
||||
onunhandledrejection = (event) => onerror!(event.reason)
|
||||
|
||||
import { SugoiAuthProvider, WebStorage } from 'twitch-cloud-ebs'
|
||||
import { SugoiAuthProvider, WebStorage } from '@sugoidogo/twitch-cloud-ebs'
|
||||
const origin = 'https://ebs.sugoidogo.com'
|
||||
|
||||
const client_id = 'ib2n7v7mur7ab2mcxv7rjju2ctsyoi'
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
import { SugoiAuthProvider, WebStorage } from 'twitch-cloud-ebs'
|
||||
import { SugoiAuthProvider, WebStorage } from '@sugoidogo/twitch-cloud-ebs'
|
||||
import { ApiClient } from '@twurple/api'
|
||||
import { EventSubWsListener } from '@twurple/eventsub-ws'
|
||||
|
||||
|
||||
Reference in New Issue
Block a user