1 Commits
Author SHA1 Message Date
sugoidogo 809d3ed5a2 refactor
Publish / release (push) Failing after 46s
2025-12-17 02:53:36 -08:00
7 changed files with 142 additions and 136 deletions
+1
View File
@@ -0,0 +1 @@
@sugoidogo:registry=https://gitea.sugoidogo.com/api/packages/sugoidogo/npm/
-98
View File
@@ -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>
+97 -20
View File
@@ -1,21 +1,98 @@
<!DOCTYPE html> <h1>Sugoi Streamathon Timer</h1>
<html lang="en"> <div id="status">Loading...</div>
<head> <br>
<meta charset="UTF-8"> <form id="config">
<meta http-equiv="X-UA-Compatible" content="IE=edge"> <label>
<meta name="viewport" content="width=device-width, initial-scale=1.0"> Starting Time:
<link rel="preconnect" href="https://fonts.googleapis.com"> <input type="text" name="start-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="8:00:00" required>
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin> </label>
<link href="https://fonts.googleapis.com/css2?family=Manrope:wght@600&display=swap" rel="stylesheet"> <br>
<link rel="stylesheet" href="css/style.css"> <label>
<title>Subathon Timer</title> <input type="checkbox" name="max-time-enabled" checked>
</head> Maximum Time:
<body> <input type="text" name="max-time" pattern="[\d.\d:]+" placeholder="HH:MM:SS" value="12:00:00" required>
<div id="container" class="timer"> </label>
<div id="textDiv"> <br>
<p id="timeText">Loading...</p> <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>
</div> </form>
<script type="module" src="js/script.js"></script> <style>
</body> * {
</html> 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>
+21
View File
@@ -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>
+18 -13
View File
@@ -5,12 +5,12 @@
"packages": { "packages": {
"": { "": {
"dependencies": { "dependencies": {
"@sugoidogo/js-util": "^0.1.0",
"@sugoidogo/twitch-cloud-ebs": "^1.2.0",
"@twurple/api": "^7.2.1", "@twurple/api": "^7.2.1",
"@twurple/eventsub-ws": "^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", "localforage": "^1.10.0",
"socket.io-client": "^4.8.1", "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"
}, },
"devDependencies": { "devDependencies": {
"@types/web": "^0.0.301", "@types/web": "^0.0.301",
@@ -1177,11 +1177,22 @@
"dev": true, "dev": true,
"license": "CC0-1.0" "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": { "node_modules/@twurple/api": {
"version": "7.2.1", "version": "7.2.1",
"resolved": "https://registry.npmjs.org/@twurple/api/-/api-7.2.1.tgz", "resolved": "https://registry.npmjs.org/@twurple/api/-/api-7.2.1.tgz",
"integrity": "sha512-fqoX87GyHRL4pSmgloF5Mfj2XDJMx8fWBbcl4JGG7bgF2jvH5X9p3nzH169zqwSU/etfUdfytyoQ7/r2R+G3cg==", "integrity": "sha512-fqoX87GyHRL4pSmgloF5Mfj2XDJMx8fWBbcl4JGG7bgF2jvH5X9p3nzH169zqwSU/etfUdfytyoQ7/r2R+G3cg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@d-fischer/cache-decorators": "^4.0.0", "@d-fischer/cache-decorators": "^4.0.0",
"@d-fischer/cross-fetch": "^5.0.1", "@d-fischer/cross-fetch": "^5.0.1",
@@ -1223,6 +1234,7 @@
"resolved": "https://registry.npmjs.org/@twurple/auth/-/auth-7.2.1.tgz", "resolved": "https://registry.npmjs.org/@twurple/auth/-/auth-7.2.1.tgz",
"integrity": "sha512-IGHsJ/g0RblRSBC59XKA9277rE5w1dAKdhCPQz1QwkWnt6fsUyVoD1ut+qZvjuh7ssX1SBtNzFqohydfmWZytg==", "integrity": "sha512-IGHsJ/g0RblRSBC59XKA9277rE5w1dAKdhCPQz1QwkWnt6fsUyVoD1ut+qZvjuh7ssX1SBtNzFqohydfmWZytg==",
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"@d-fischer/logger": "^4.2.1", "@d-fischer/logger": "^4.2.1",
"@d-fischer/shared-utils": "^3.6.1", "@d-fischer/shared-utils": "^3.6.1",
@@ -1573,11 +1585,6 @@
"dev": true, "dev": true,
"license": "MIT" "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": { "node_modules/kleur": {
"version": "4.1.5", "version": "4.1.5",
"resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz", "resolved": "https://registry.npmjs.org/kleur/-/kleur-4.1.5.tgz",
@@ -1831,11 +1838,6 @@
"integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==",
"license": "0BSD" "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": { "node_modules/undici": {
"version": "7.14.0", "version": "7.14.0",
"resolved": "https://registry.npmjs.org/undici/-/undici-7.14.0.tgz", "resolved": "https://registry.npmjs.org/undici/-/undici-7.14.0.tgz",
@@ -1858,6 +1860,7 @@
"integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==", "integrity": "sha512-i7qRCmY42zmCwnYlh9H2SvLEypEFGye5iRmEMKjcGi7zk9UquigRjFtTLz0TYqr0ZGLZhaMHl/foy1bZR+Cwlw==",
"dev": true, "dev": true,
"license": "MIT", "license": "MIT",
"peer": true,
"dependencies": { "dependencies": {
"pathe": "^2.0.3" "pathe": "^2.0.3"
} }
@@ -1885,6 +1888,7 @@
"dev": true, "dev": true,
"hasInstallScript": true, "hasInstallScript": true,
"license": "Apache-2.0", "license": "Apache-2.0",
"peer": true,
"bin": { "bin": {
"workerd": "bin/workerd" "workerd": "bin/workerd"
}, },
@@ -2423,6 +2427,7 @@
"resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz", "resolved": "https://registry.npmjs.org/ws/-/ws-8.18.0.tgz",
"integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==", "integrity": "sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==",
"license": "MIT", "license": "MIT",
"peer": true,
"engines": { "engines": {
"node": ">=10.0.0" "node": ">=10.0.0"
}, },
+4 -4
View File
@@ -2,7 +2,7 @@
"scripts": { "scripts": {
"prepublish": "esbuild --outdir=dist/js --format=esm --bundle --minify --sourcemap --sources-content src/*", "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", "publish": "wrangler pages deploy dist --project-name twitch-subathon-countdown --branch=sugoi",
"test": "wrangler pages dev dist" "test": "wrangler pages dev dist --ip=localhost"
}, },
"devDependencies": { "devDependencies": {
"@types/web": "^0.0.301", "@types/web": "^0.0.301",
@@ -10,11 +10,11 @@
"wrangler": "^4.54.0" "wrangler": "^4.54.0"
}, },
"dependencies": { "dependencies": {
"@sugoidogo/js-util": "^0.1.0",
"@sugoidogo/twitch-cloud-ebs": "^1.2.0",
"@twurple/api": "^7.2.1", "@twurple/api": "^7.2.1",
"@twurple/eventsub-ws": "^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", "localforage": "^1.10.0",
"socket.io-client": "^4.8.1", "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"
} }
} }
+1 -1
View File
@@ -5,7 +5,7 @@ onerror = function (error) {
} }
onunhandledrejection = (event) => onerror!(event.reason) 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 origin = 'https://ebs.sugoidogo.com'
const client_id = 'ib2n7v7mur7ab2mcxv7rjju2ctsyoi' const client_id = 'ib2n7v7mur7ab2mcxv7rjju2ctsyoi'