Refactor environment variable handling in package.json scripts, update .env.example for consistency, and enhance Turbo configuration for environment variable passthrough. Modify API content type parsing and resolve circular dependencies in Auth and Billing modules. Add unique username generation logic in bootstrap-admin script.
Some checks failed
CI / Node — lint, typecheck, test, build (push) Failing after 9s
CI / Go — node-agent tests (push) Failing after 8s
CI / Go — edge-gateway build (push) Successful in 19s

This commit is contained in:
TheOnlyMace
2026-07-05 14:40:57 +02:00
parent 20e044d32b
commit 2126e7bebf
82 changed files with 233 additions and 12 deletions

View File

@@ -4,7 +4,7 @@
# =============================================================================
# --- Application ---
APP_NAME=HexaHost GameCloud
APP_NAME="HexaHost GameCloud"
APP_ENV=development
APP_URL=http://localhost:3000
API_URL=http://localhost:3001
@@ -76,7 +76,7 @@ EDGE_START_WAIT_SECONDS=180
EDGE_POLL_INTERVAL_MS=2000
# --- Catalog Providers ---
MODRINTH_USER_AGENT=HexaHostGameCloud/0.1.0 (contact@example.net)
MODRINTH_USER_AGENT="HexaHostGameCloud/0.1.0 (contact@example.net)"
CURSEFORGE_API_KEY=
# --- Billing ---

1
.gitignore vendored
View File

@@ -7,3 +7,4 @@ dist/
bin/
*.log
data/
.logs/

View File

@@ -0,0 +1 @@
{"files":{"packages/auth/dist/username.d.ts":{"size":442,"mtime_nanos":1783255151494048909,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.js":{"size":1089,"mtime_nanos":1783255151493710470,"mode":420,"is_dir":false},"packages/auth/dist/tokens.d.ts.map":{"size":281,"mtime_nanos":1783255151493885819,"mode":420,"is_dir":false},"packages/auth/dist/username.d.ts.map":{"size":430,"mtime_nanos":1783255151494073119,"mode":420,"is_dir":false},"packages/auth/dist/password.d.ts":{"size":200,"mtime_nanos":1783255151493536190,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.d.ts.map":{"size":306,"mtime_nanos":1783255151493686290,"mode":420,"is_dir":false},"packages/auth/dist/password.d.ts.map":{"size":266,"mtime_nanos":1783255151493572620,"mode":420,"is_dir":false},"packages/auth/.turbo/turbo-build.log":{"size":102,"mtime_nanos":1783255052127378550,"mode":420,"is_dir":false},"packages/auth/dist/session.js":{"size":672,"mtime_nanos":1783255151493811820,"mode":420,"is_dir":false},"packages/auth/dist/totp.d.ts.map":{"size":303,"mtime_nanos":1783255151493978659,"mode":420,"is_dir":false},"packages/auth/dist/index.js.map":{"size":824,"mtime_nanos":1783255151493485050,"mode":420,"is_dir":false},"packages/auth/dist/totp.js.map":{"size":569,"mtime_nanos":1783255151494024989,"mode":420,"is_dir":false},"packages/auth/dist/username.js":{"size":2787,"mtime_nanos":1783255151494096559,"mode":420,"is_dir":false},"packages/auth/dist/session.d.ts.map":{"size":300,"mtime_nanos":1783255151493784580,"mode":420,"is_dir":false},"packages/auth/dist/index.d.ts":{"size":1570,"mtime_nanos":1783255151493314190,"mode":420,"is_dir":false},"packages/auth/dist/index.d.ts.map":{"size":1443,"mtime_nanos":1783255151493364820,"mode":420,"is_dir":false},"packages/auth/dist/tokens.js.map":{"size":760,"mtime_nanos":1783255151493932809,"mode":420,"is_dir":false},"packages/auth/dist/totp.d.ts":{"size":269,"mtime_nanos":1783255151493955819,"mode":420,"is_dir":false},"packages/auth/dist/index.js":{"size":4135,"mtime_nanos":1783255151493407900,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.js.map":{"size":949,"mtime_nanos":1783255151493735800,"mode":420,"is_dir":false},"packages/auth/dist/tokens.d.ts":{"size":244,"mtime_nanos":1783255151493861049,"mode":420,"is_dir":false},"packages/auth/dist/totp.js":{"size":683,"mtime_nanos":1783255151494002079,"mode":420,"is_dir":false},"packages/auth/dist/username.js.map":{"size":2294,"mtime_nanos":1783255151494119969,"mode":420,"is_dir":false},"packages/auth/dist/tokens.js":{"size":864,"mtime_nanos":1783255151493909599,"mode":420,"is_dir":false},"packages/auth/dist/session.js.map":{"size":493,"mtime_nanos":1783255151493836729,"mode":420,"is_dir":false},"packages/auth/dist/password.js":{"size":482,"mtime_nanos":1783255151493603670,"mode":420,"is_dir":false},"packages/auth/dist/password.js.map":{"size":404,"mtime_nanos":1783255151493633310,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.d.ts":{"size":264,"mtime_nanos":1783255151493659970,"mode":420,"is_dir":false},"packages/auth/dist/session.d.ts":{"size":334,"mtime_nanos":1783255151493759480,"mode":420,"is_dir":false}},"order":["packages/auth/.turbo/turbo-build.log","packages/auth/dist/index.d.ts","packages/auth/dist/index.d.ts.map","packages/auth/dist/index.js","packages/auth/dist/index.js.map","packages/auth/dist/password.d.ts","packages/auth/dist/password.d.ts.map","packages/auth/dist/password.js","packages/auth/dist/password.js.map","packages/auth/dist/recovery-codes.d.ts","packages/auth/dist/recovery-codes.d.ts.map","packages/auth/dist/recovery-codes.js","packages/auth/dist/recovery-codes.js.map","packages/auth/dist/session.d.ts","packages/auth/dist/session.d.ts.map","packages/auth/dist/session.js","packages/auth/dist/session.js.map","packages/auth/dist/tokens.d.ts","packages/auth/dist/tokens.d.ts.map","packages/auth/dist/tokens.js","packages/auth/dist/tokens.js.map","packages/auth/dist/totp.d.ts","packages/auth/dist/totp.d.ts.map","packages/auth/dist/totp.js","packages/auth/dist/totp.js.map","packages/auth/dist/username.d.ts","packages/auth/dist/username.d.ts.map","packages/auth/dist/username.js","packages/auth/dist/username.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"083c8105a3916fd9","duration":2162,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/083c8105a3916fd9.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/database/dist/index.js":{"size":962,"mtime_nanos":1783254827141954191,"mode":420,"is_dir":false},"packages/database/dist/index.d.ts":{"size":991,"mtime_nanos":1783254827155894338,"mode":420,"is_dir":false},"packages/database/dist/index.js.map":{"size":617,"mtime_nanos":1783254827141791201,"mode":420,"is_dir":false},"packages/database/.turbo/turbo-build.log":{"size":506,"mtime_nanos":1783254827176786884,"mode":420,"is_dir":false},"packages/database/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/database/dist/index.d.ts.map":{"size":733,"mtime_nanos":1783254827154786924,"mode":420,"is_dir":false}},"order":["packages/database/.turbo/turbo-build.log","packages/database/dist","packages/database/dist/index.d.ts","packages/database/dist/index.d.ts.map","packages/database/dist/index.js","packages/database/dist/index.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"0b354b78644f8aad","duration":3330,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/0b354b78644f8aad.tar.zst vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"1a030577ec3e46e3","duration":1256,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/1a030577ec3e46e3.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/config/dist/index.js":{"size":3043,"mtime_nanos":1783254824143649550,"mode":420,"is_dir":false},"packages/config/dist/index.js.map":{"size":3214,"mtime_nanos":1783254824143422120,"mode":420,"is_dir":false},"packages/config/dist/index.d.ts":{"size":1874,"mtime_nanos":1783254824156792366,"mode":420,"is_dir":false},"packages/config/.turbo/turbo-build.log":{"size":102,"mtime_nanos":1783254824177792328,"mode":420,"is_dir":false},"packages/config/dist/index.d.ts.map":{"size":521,"mtime_nanos":1783254824156792366,"mode":420,"is_dir":false},"packages/config/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true}},"order":["packages/config/.turbo/turbo-build.log","packages/config/dist","packages/config/dist/index.d.ts","packages/config/dist/index.d.ts.map","packages/config/dist/index.js","packages/config/dist/index.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"3bace58668d8c69c","duration":1783,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/3bace58668d8c69c.tar.zst vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"51664cdd00a0048d","duration":2814,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/51664cdd00a0048d.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/integration-auth/dist/hmac.test.js":{"size":953,"mtime_nanos":1783255052203378412,"mode":420,"is_dir":false},"packages/integration-auth/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/integration-auth/dist/hmac.d.ts.map":{"size":821,"mtime_nanos":1783255052199378419,"mode":420,"is_dir":false},"packages/integration-auth/.turbo/turbo-build.log":{"size":126,"mtime_nanos":1783255052243378339,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.js":{"size":1604,"mtime_nanos":1783255052208378403,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.js":{"size":2272,"mtime_nanos":1783255052181441322,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.js.map":{"size":1048,"mtime_nanos":1783255052208378403,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.d.ts.map":{"size":316,"mtime_nanos":1783255052217816303,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.js.map":{"size":382,"mtime_nanos":1783255052216516404,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.d.ts":{"size":1050,"mtime_nanos":1783255052199378419,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.test.d.ts.map":{"size":112,"mtime_nanos":1783255052204378410,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.test.d.ts":{"size":50,"mtime_nanos":1783255052205548416,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.js.map":{"size":2198,"mtime_nanos":1783255052180273802,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.test.js.map":{"size":744,"mtime_nanos":1783255052203378412,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.d.ts":{"size":368,"mtime_nanos":1783255052217816303,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.js":{"size":2061,"mtime_nanos":1783255052216799793,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.d.ts":{"size":628,"mtime_nanos":1783255052210378399,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.d.ts.map":{"size":370,"mtime_nanos":1783255052210378399,"mode":420,"is_dir":false}},"order":["packages/integration-auth/.turbo/turbo-build.log","packages/integration-auth/dist","packages/integration-auth/dist/hmac.d.ts","packages/integration-auth/dist/hmac.d.ts.map","packages/integration-auth/dist/hmac.js","packages/integration-auth/dist/hmac.js.map","packages/integration-auth/dist/hmac.test.d.ts","packages/integration-auth/dist/hmac.test.d.ts.map","packages/integration-auth/dist/hmac.test.js","packages/integration-auth/dist/hmac.test.js.map","packages/integration-auth/dist/index.d.ts","packages/integration-auth/dist/index.d.ts.map","packages/integration-auth/dist/index.js","packages/integration-auth/dist/index.js.map","packages/integration-auth/dist/mtls.d.ts","packages/integration-auth/dist/mtls.d.ts.map","packages/integration-auth/dist/mtls.js","packages/integration-auth/dist/mtls.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"53573aa3334db733","duration":2278,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/53573aa3334db733.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/storage/dist/client.js.map":{"size":1685,"mtime_nanos":1783255052719377475,"mode":420,"is_dir":false},"packages/storage/dist/client.js":{"size":2298,"mtime_nanos":1783255052720940624,"mode":420,"is_dir":false},"packages/storage/dist/index.js":{"size":1654,"mtime_nanos":1783255052726484843,"mode":420,"is_dir":false},"packages/storage/dist/keys.test.d.ts":{"size":50,"mtime_nanos":1783255052728421552,"mode":420,"is_dir":false},"packages/storage/dist/config.d.ts":{"size":922,"mtime_nanos":1783255052716923925,"mode":420,"is_dir":false},"packages/storage/dist/index.d.ts.map":{"size":291,"mtime_nanos":1783255052726484843,"mode":420,"is_dir":false},"packages/storage/.turbo/turbo-build.log":{"size":108,"mtime_nanos":1783255052745377428,"mode":420,"is_dir":false},"packages/storage/dist/keys.test.d.ts.map":{"size":112,"mtime_nanos":1783255052728421552,"mode":420,"is_dir":false},"packages/storage/dist/config.d.ts.map":{"size":358,"mtime_nanos":1783255052715377483,"mode":420,"is_dir":false},"packages/storage/dist/client.d.ts.map":{"size":960,"mtime_nanos":1783255052722502344,"mode":420,"is_dir":false},"packages/storage/dist/config.js.map":{"size":967,"mtime_nanos":1783255052705824178,"mode":420,"is_dir":false},"packages/storage/dist/index.js.map":{"size":339,"mtime_nanos":1783255052726285013,"mode":420,"is_dir":false},"packages/storage/dist/client.d.ts":{"size":925,"mtime_nanos":1783255052723096764,"mode":420,"is_dir":false},"packages/storage/dist/config.js":{"size":1011,"mtime_nanos":1783255052705916208,"mode":420,"is_dir":false},"packages/storage/dist/keys.test.js":{"size":623,"mtime_nanos":1783255052728421552,"mode":420,"is_dir":false},"packages/storage/dist/index.d.ts":{"size":290,"mtime_nanos":1783255052726484843,"mode":420,"is_dir":false},"packages/storage/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/storage/dist/keys.test.js.map":{"size":518,"mtime_nanos":1783255052728371962,"mode":420,"is_dir":false}},"order":["packages/storage/.turbo/turbo-build.log","packages/storage/dist","packages/storage/dist/client.d.ts","packages/storage/dist/client.d.ts.map","packages/storage/dist/client.js","packages/storage/dist/client.js.map","packages/storage/dist/config.d.ts","packages/storage/dist/config.d.ts.map","packages/storage/dist/config.js","packages/storage/dist/config.js.map","packages/storage/dist/index.d.ts","packages/storage/dist/index.d.ts.map","packages/storage/dist/index.js","packages/storage/dist/index.js.map","packages/storage/dist/keys.test.d.ts","packages/storage/dist/keys.test.d.ts.map","packages/storage/dist/keys.test.js","packages/storage/dist/keys.test.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"7138297b16f09c78","duration":2780,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/7138297b16f09c78.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/auth/dist/password.js.map":{"size":404,"mtime_nanos":1783254823699793196,"mode":420,"is_dir":false},"packages/auth/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/auth/dist/tokens.d.ts.map":{"size":281,"mtime_nanos":1783254823716073291,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.d.ts.map":{"size":306,"mtime_nanos":1783254823751018942,"mode":420,"is_dir":false},"packages/auth/dist/index.d.ts":{"size":1570,"mtime_nanos":1783254823800793012,"mode":420,"is_dir":false},"packages/auth/dist/username.d.ts.map":{"size":430,"mtime_nanos":1783254823731793138,"mode":420,"is_dir":false},"packages/auth/dist/username.js.map":{"size":2294,"mtime_nanos":1783254823728793143,"mode":420,"is_dir":false},"packages/auth/dist/totp.d.ts":{"size":269,"mtime_nanos":1783254823743793116,"mode":420,"is_dir":false},"packages/auth/dist/totp.js":{"size":683,"mtime_nanos":1783254823741793119,"mode":420,"is_dir":false},"packages/auth/dist/index.d.ts.map":{"size":1443,"mtime_nanos":1783254823800793012,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.js":{"size":1089,"mtime_nanos":1783254823749679443,"mode":420,"is_dir":false},"packages/auth/dist/session.d.ts.map":{"size":300,"mtime_nanos":1783254823757744571,"mode":420,"is_dir":false},"packages/auth/dist/username.d.ts":{"size":442,"mtime_nanos":1783254823731793138,"mode":420,"is_dir":false},"packages/auth/dist/session.d.ts":{"size":334,"mtime_nanos":1783254823757986501,"mode":420,"is_dir":false},"packages/auth/dist/tokens.js.map":{"size":760,"mtime_nanos":1783254823712940372,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.js.map":{"size":949,"mtime_nanos":1783254823749441483,"mode":420,"is_dir":false},"packages/auth/dist/index.js":{"size":4135,"mtime_nanos":1783254823782793045,"mode":420,"is_dir":false},"packages/auth/dist/password.js":{"size":482,"mtime_nanos":1783254823700699224,"mode":420,"is_dir":false},"packages/auth/dist/session.js.map":{"size":493,"mtime_nanos":1783254823754793096,"mode":420,"is_dir":false},"packages/auth/dist/username.js":{"size":2787,"mtime_nanos":1783254823729845437,"mode":420,"is_dir":false},"packages/auth/dist/password.d.ts.map":{"size":266,"mtime_nanos":1783254823706019293,"mode":420,"is_dir":false},"packages/auth/dist/tokens.d.ts":{"size":244,"mtime_nanos":1783254823716326991,"mode":420,"is_dir":false},"packages/auth/dist/index.js.map":{"size":824,"mtime_nanos":1783254823782793045,"mode":420,"is_dir":false},"packages/auth/dist/totp.d.ts.map":{"size":303,"mtime_nanos":1783254823742793118,"mode":420,"is_dir":false},"packages/auth/dist/session.js":{"size":672,"mtime_nanos":1783254823754793096,"mode":420,"is_dir":false},"packages/auth/dist/totp.js.map":{"size":569,"mtime_nanos":1783254823741793119,"mode":420,"is_dir":false},"packages/auth/.turbo/turbo-build.log":{"size":98,"mtime_nanos":1783254823836792947,"mode":420,"is_dir":false},"packages/auth/dist/recovery-codes.d.ts":{"size":264,"mtime_nanos":1783254823751270432,"mode":420,"is_dir":false},"packages/auth/dist/tokens.js":{"size":864,"mtime_nanos":1783254823713299411,"mode":420,"is_dir":false},"packages/auth/dist/password.d.ts":{"size":200,"mtime_nanos":1783254823706019293,"mode":420,"is_dir":false}},"order":["packages/auth/.turbo/turbo-build.log","packages/auth/dist","packages/auth/dist/index.d.ts","packages/auth/dist/index.d.ts.map","packages/auth/dist/index.js","packages/auth/dist/index.js.map","packages/auth/dist/password.d.ts","packages/auth/dist/password.d.ts.map","packages/auth/dist/password.js","packages/auth/dist/password.js.map","packages/auth/dist/recovery-codes.d.ts","packages/auth/dist/recovery-codes.d.ts.map","packages/auth/dist/recovery-codes.js","packages/auth/dist/recovery-codes.js.map","packages/auth/dist/session.d.ts","packages/auth/dist/session.d.ts.map","packages/auth/dist/session.js","packages/auth/dist/session.js.map","packages/auth/dist/tokens.d.ts","packages/auth/dist/tokens.d.ts.map","packages/auth/dist/tokens.js","packages/auth/dist/tokens.js.map","packages/auth/dist/totp.d.ts","packages/auth/dist/totp.d.ts.map","packages/auth/dist/totp.js","packages/auth/dist/totp.js.map","packages/auth/dist/username.d.ts","packages/auth/dist/username.d.ts.map","packages/auth/dist/username.js","packages/auth/dist/username.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"7c83d574699fc347","duration":1442,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/7c83d574699fc347.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/config/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/config/dist/index.js.map":{"size":3214,"mtime_nanos":1783255052195378426,"mode":420,"is_dir":false},"packages/config/.turbo/turbo-build.log":{"size":106,"mtime_nanos":1783255052255378317,"mode":420,"is_dir":false},"packages/config/dist/index.d.ts.map":{"size":521,"mtime_nanos":1783255052219805483,"mode":420,"is_dir":false},"packages/config/dist/index.d.ts":{"size":1874,"mtime_nanos":1783255052220051732,"mode":420,"is_dir":false},"packages/config/dist/index.js":{"size":3043,"mtime_nanos":1783255052196378425,"mode":420,"is_dir":false}},"order":["packages/config/.turbo/turbo-build.log","packages/config/dist","packages/config/dist/index.d.ts","packages/config/dist/index.d.ts.map","packages/config/dist/index.js","packages/config/dist/index.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"7ec080769e22b52e","duration":2294,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/7ec080769e22b52e.tar.zst vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"83bc945bf697348a","duration":17907,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/83bc945bf697348a.tar.zst vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"8c5cbe4308e26227","duration":1073,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/8c5cbe4308e26227.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/scheduler/dist/index.js":{"size":2244,"mtime_nanos":1783254823897792836,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.d.ts.map":{"size":124,"mtime_nanos":1783254823903792825,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.js":{"size":1778,"mtime_nanos":1783254823903792825,"mode":420,"is_dir":false},"packages/scheduler/dist/index.js.map":{"size":414,"mtime_nanos":1783254823897792836,"mode":420,"is_dir":false},"packages/scheduler/dist/capacity.d.ts":{"size":1024,"mtime_nanos":1783254823885792858,"mode":420,"is_dir":false},"packages/scheduler/dist/types.d.ts":{"size":615,"mtime_nanos":1783254823857792909,"mode":420,"is_dir":false},"packages/scheduler/dist/index.d.ts":{"size":431,"mtime_nanos":1783254823898792834,"mode":420,"is_dir":false},"packages/scheduler/dist/capacity.js.map":{"size":2635,"mtime_nanos":1783254823878792871,"mode":420,"is_dir":false},"packages/scheduler/.turbo/turbo-build.log":{"size":108,"mtime_nanos":1783254823935792767,"mode":420,"is_dir":false},"packages/scheduler/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/scheduler/dist/index.d.ts.map":{"size":378,"mtime_nanos":1783254823898792834,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.js.map":{"size":939,"mtime_nanos":1783254823890792849,"mode":420,"is_dir":false},"packages/scheduler/dist/capacity.js":{"size":3044,"mtime_nanos":1783254823878792871,"mode":420,"is_dir":false},"packages/scheduler/dist/types.js.map":{"size":102,"mtime_nanos":1783254823853908348,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.d.ts":{"size":56,"mtime_nanos":1783254823903792825,"mode":420,"is_dir":false},"packages/scheduler/dist/types.js":{"size":110,"mtime_nanos":1783254823853908348,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.d.ts":{"size":304,"mtime_nanos":1783254823892792845,"mode":420,"is_dir":false},"packages/scheduler/dist/capacity.d.ts.map":{"size":766,"mtime_nanos":1783254823885792858,"mode":420,"is_dir":false},"packages/scheduler/dist/types.d.ts.map":{"size":664,"mtime_nanos":1783254823857792909,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.d.ts.map":{"size":347,"mtime_nanos":1783254823892792845,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.js.map":{"size":1650,"mtime_nanos":1783254823903792825,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.js":{"size":944,"mtime_nanos":1783254823891792847,"mode":420,"is_dir":false}},"order":["packages/scheduler/.turbo/turbo-build.log","packages/scheduler/dist","packages/scheduler/dist/capacity.d.ts","packages/scheduler/dist/capacity.d.ts.map","packages/scheduler/dist/capacity.js","packages/scheduler/dist/capacity.js.map","packages/scheduler/dist/index.d.ts","packages/scheduler/dist/index.d.ts.map","packages/scheduler/dist/index.js","packages/scheduler/dist/index.js.map","packages/scheduler/dist/scheduling.test.d.ts","packages/scheduler/dist/scheduling.test.d.ts.map","packages/scheduler/dist/scheduling.test.js","packages/scheduler/dist/scheduling.test.js.map","packages/scheduler/dist/select-node.d.ts","packages/scheduler/dist/select-node.d.ts.map","packages/scheduler/dist/select-node.js","packages/scheduler/dist/select-node.js.map","packages/scheduler/dist/types.d.ts","packages/scheduler/dist/types.d.ts.map","packages/scheduler/dist/types.js","packages/scheduler/dist/types.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"95e8fc4f72d7869c","duration":1541,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/95e8fc4f72d7869c.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/metering/dist/metering.test.js.map":{"size":782,"mtime_nanos":1783254824041792575,"mode":420,"is_dir":false},"packages/metering/.turbo/turbo-build.log":{"size":106,"mtime_nanos":1783254824068792526,"mode":420,"is_dir":false},"packages/metering/dist/metering.test.d.ts":{"size":54,"mtime_nanos":1783254824042792573,"mode":420,"is_dir":false},"packages/metering/dist/index.js":{"size":1548,"mtime_nanos":1783254824029792597,"mode":420,"is_dir":false},"packages/metering/dist/metering.test.d.ts.map":{"size":120,"mtime_nanos":1783254824042792573,"mode":420,"is_dir":false},"packages/metering/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/metering/dist/metering.test.js":{"size":901,"mtime_nanos":1783254824041792575,"mode":420,"is_dir":false},"packages/metering/dist/index.d.ts":{"size":561,"mtime_nanos":1783254824037714265,"mode":420,"is_dir":false},"packages/metering/dist/index.d.ts.map":{"size":479,"mtime_nanos":1783254824036792584,"mode":420,"is_dir":false},"packages/metering/dist/index.js.map":{"size":1220,"mtime_nanos":1783254824029792597,"mode":420,"is_dir":false}},"order":["packages/metering/.turbo/turbo-build.log","packages/metering/dist","packages/metering/dist/index.d.ts","packages/metering/dist/index.d.ts.map","packages/metering/dist/index.js","packages/metering/dist/index.js.map","packages/metering/dist/metering.test.d.ts","packages/metering/dist/metering.test.d.ts.map","packages/metering/dist/metering.test.js","packages/metering/dist/metering.test.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"a2830d8f7ca0f71c","duration":1674,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/a2830d8f7ca0f71c.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/storage/.turbo/turbo-build.log":{"size":104,"mtime_nanos":1783254824603791555,"mode":420,"is_dir":false},"packages/storage/dist/index.js.map":{"size":339,"mtime_nanos":1783254824571791613,"mode":420,"is_dir":false},"packages/storage/dist/client.js.map":{"size":1685,"mtime_nanos":1783254824564791625,"mode":420,"is_dir":false},"packages/storage/dist/config.js":{"size":1011,"mtime_nanos":1783254824544080765,"mode":420,"is_dir":false},"packages/storage/dist/index.d.ts":{"size":290,"mtime_nanos":1783254824574588148,"mode":420,"is_dir":false},"packages/storage/dist/keys.test.js":{"size":623,"mtime_nanos":1783254824576753387,"mode":420,"is_dir":false},"packages/storage/dist/index.d.ts.map":{"size":291,"mtime_nanos":1783254824574382738,"mode":420,"is_dir":false},"packages/storage/dist/client.d.ts.map":{"size":960,"mtime_nanos":1783254824567791620,"mode":420,"is_dir":false},"packages/storage/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/storage/dist/client.js":{"size":2298,"mtime_nanos":1783254824565759240,"mode":420,"is_dir":false},"packages/storage/dist/config.d.ts.map":{"size":358,"mtime_nanos":1783254824557791638,"mode":420,"is_dir":false},"packages/storage/dist/index.js":{"size":1654,"mtime_nanos":1783254824571791613,"mode":420,"is_dir":false},"packages/storage/dist/keys.test.d.ts":{"size":50,"mtime_nanos":1783254824576791604,"mode":420,"is_dir":false},"packages/storage/dist/keys.test.d.ts.map":{"size":112,"mtime_nanos":1783254824576791604,"mode":420,"is_dir":false},"packages/storage/dist/config.d.ts":{"size":922,"mtime_nanos":1783254824558932792,"mode":420,"is_dir":false},"packages/storage/dist/client.d.ts":{"size":925,"mtime_nanos":1783254824567791620,"mode":420,"is_dir":false},"packages/storage/dist/config.js.map":{"size":967,"mtime_nanos":1783254824543943805,"mode":420,"is_dir":false},"packages/storage/dist/keys.test.js.map":{"size":518,"mtime_nanos":1783254824576584287,"mode":420,"is_dir":false}},"order":["packages/storage/.turbo/turbo-build.log","packages/storage/dist","packages/storage/dist/client.d.ts","packages/storage/dist/client.d.ts.map","packages/storage/dist/client.js","packages/storage/dist/client.js.map","packages/storage/dist/config.d.ts","packages/storage/dist/config.d.ts.map","packages/storage/dist/config.js","packages/storage/dist/config.js.map","packages/storage/dist/index.d.ts","packages/storage/dist/index.d.ts.map","packages/storage/dist/index.js","packages/storage/dist/index.js.map","packages/storage/dist/keys.test.d.ts","packages/storage/dist/keys.test.d.ts.map","packages/storage/dist/keys.test.js","packages/storage/dist/keys.test.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"a30020bd73a840d7","duration":2209,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/a30020bd73a840d7.tar.zst vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"a480ca24eeac5ad4","duration":2232,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/a480ca24eeac5ad4.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/integration-auth/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/integration-auth/dist/hmac.js.map":{"size":2198,"mtime_nanos":1783254824066513338,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.d.ts":{"size":628,"mtime_nanos":1783254824092511382,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.js.map":{"size":1048,"mtime_nanos":1783254824089792488,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.test.d.ts":{"size":50,"mtime_nanos":1783254824086436383,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.test.d.ts.map":{"size":112,"mtime_nanos":1783254824086436383,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.js":{"size":2272,"mtime_nanos":1783254824066843698,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.d.ts":{"size":1050,"mtime_nanos":1783254824080792504,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.test.js":{"size":953,"mtime_nanos":1783254824084792497,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.test.js.map":{"size":744,"mtime_nanos":1783254824084792497,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.d.ts":{"size":368,"mtime_nanos":1783254824097792473,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.d.ts.map":{"size":316,"mtime_nanos":1783254824097792473,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.js":{"size":2061,"mtime_nanos":1783254824096792475,"mode":420,"is_dir":false},"packages/integration-auth/dist/index.js.map":{"size":382,"mtime_nanos":1783254824096792475,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.js":{"size":1604,"mtime_nanos":1783254824090568502,"mode":420,"is_dir":false},"packages/integration-auth/dist/hmac.d.ts.map":{"size":821,"mtime_nanos":1783254824080792504,"mode":420,"is_dir":false},"packages/integration-auth/dist/mtls.d.ts.map":{"size":370,"mtime_nanos":1783254824091792484,"mode":420,"is_dir":false},"packages/integration-auth/.turbo/turbo-build.log":{"size":122,"mtime_nanos":1783254824115792441,"mode":420,"is_dir":false}},"order":["packages/integration-auth/.turbo/turbo-build.log","packages/integration-auth/dist","packages/integration-auth/dist/hmac.d.ts","packages/integration-auth/dist/hmac.d.ts.map","packages/integration-auth/dist/hmac.js","packages/integration-auth/dist/hmac.js.map","packages/integration-auth/dist/hmac.test.d.ts","packages/integration-auth/dist/hmac.test.d.ts.map","packages/integration-auth/dist/hmac.test.js","packages/integration-auth/dist/hmac.test.js.map","packages/integration-auth/dist/index.d.ts","packages/integration-auth/dist/index.d.ts.map","packages/integration-auth/dist/index.js","packages/integration-auth/dist/index.js.map","packages/integration-auth/dist/mtls.d.ts","packages/integration-auth/dist/mtls.d.ts.map","packages/integration-auth/dist/mtls.js","packages/integration-auth/dist/mtls.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"b85ca2f9ca81bcb3","duration":1721,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/b85ca2f9ca81bcb3.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/catalog/dist/compatibility.js":{"size":1955,"mtime_nanos":1783255052308333652,"mode":420,"is_dir":false},"packages/catalog/dist/index.d.ts.map":{"size":383,"mtime_nanos":1783255052322408118,"mode":420,"is_dir":false},"packages/catalog/dist/modrinth.js":{"size":2292,"mtime_nanos":1783255052291723086,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.js.map":{"size":1649,"mtime_nanos":1783255052307378223,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.d.ts.map":{"size":130,"mtime_nanos":1783255052316378207,"mode":420,"is_dir":false},"packages/catalog/dist/modrinth.js.map":{"size":1972,"mtime_nanos":1783255052291723086,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.d.ts":{"size":59,"mtime_nanos":1783255052316378207,"mode":420,"is_dir":false},"packages/catalog/dist/index.js.map":{"size":343,"mtime_nanos":1783255052321378197,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.js":{"size":2546,"mtime_nanos":1783255052315378209,"mode":420,"is_dir":false},"packages/catalog/dist/modrinth.d.ts":{"size":1701,"mtime_nanos":1783255052299378237,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.js.map":{"size":1968,"mtime_nanos":1783255052315378209,"mode":420,"is_dir":false},"packages/catalog/dist/modrinth.d.ts.map":{"size":1722,"mtime_nanos":1783255052299378237,"mode":420,"is_dir":false},"packages/catalog/.turbo/turbo-build.log":{"size":108,"mtime_nanos":1783255052359378128,"mode":420,"is_dir":false},"packages/catalog/dist/index.d.ts":{"size":444,"mtime_nanos":1783255052322408118,"mode":420,"is_dir":false},"packages/catalog/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/catalog/dist/index.js":{"size":1772,"mtime_nanos":1783255052322408118,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.d.ts.map":{"size":570,"mtime_nanos":1783255052309378219,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.d.ts":{"size":645,"mtime_nanos":1783255052310780041,"mode":420,"is_dir":false}},"order":["packages/catalog/.turbo/turbo-build.log","packages/catalog/dist","packages/catalog/dist/compatibility.d.ts","packages/catalog/dist/compatibility.d.ts.map","packages/catalog/dist/compatibility.js","packages/catalog/dist/compatibility.js.map","packages/catalog/dist/compatibility.test.d.ts","packages/catalog/dist/compatibility.test.d.ts.map","packages/catalog/dist/compatibility.test.js","packages/catalog/dist/compatibility.test.js.map","packages/catalog/dist/index.d.ts","packages/catalog/dist/index.d.ts.map","packages/catalog/dist/index.js","packages/catalog/dist/index.js.map","packages/catalog/dist/modrinth.d.ts","packages/catalog/dist/modrinth.d.ts.map","packages/catalog/dist/modrinth.js","packages/catalog/dist/modrinth.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"bc1b6c014f0a15b7","duration":2395,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/bc1b6c014f0a15b7.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/database/.turbo/turbo-build.log":{"size":545,"mtime_nanos":1783255055195372981,"mode":420,"is_dir":false},"packages/database/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/database/dist/index.d.ts":{"size":991,"mtime_nanos":1783255055173955545,"mode":420,"is_dir":false},"packages/database/dist/index.d.ts.map":{"size":733,"mtime_nanos":1783255055172373023,"mode":420,"is_dir":false},"packages/database/dist/index.js":{"size":962,"mtime_nanos":1783255055158449838,"mode":420,"is_dir":false},"packages/database/dist/index.js.map":{"size":617,"mtime_nanos":1783255055158349198,"mode":420,"is_dir":false}},"order":["packages/database/.turbo/turbo-build.log","packages/database/dist","packages/database/dist/index.d.ts","packages/database/dist/index.d.ts.map","packages/database/dist/index.js","packages/database/dist/index.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"d12676556f73d54d","duration":3058,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/d12676556f73d54d.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/metering/dist/index.js":{"size":1548,"mtime_nanos":1783255051818492438,"mode":420,"is_dir":false},"packages/metering/dist/index.d.ts.map":{"size":479,"mtime_nanos":1783255051825379098,"mode":420,"is_dir":false},"packages/metering/.turbo/turbo-build.log":{"size":110,"mtime_nanos":1783255051898378966,"mode":420,"is_dir":false},"packages/metering/dist/metering.test.d.ts":{"size":54,"mtime_nanos":1783255051837379076,"mode":420,"is_dir":false},"packages/metering/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/metering/dist/metering.test.d.ts.map":{"size":120,"mtime_nanos":1783255051837379076,"mode":420,"is_dir":false},"packages/metering/dist/metering.test.js":{"size":901,"mtime_nanos":1783255051832379085,"mode":420,"is_dir":false},"packages/metering/dist/index.js.map":{"size":1220,"mtime_nanos":1783255051816379114,"mode":420,"is_dir":false},"packages/metering/dist/metering.test.js.map":{"size":782,"mtime_nanos":1783255051832379085,"mode":420,"is_dir":false},"packages/metering/dist/index.d.ts":{"size":561,"mtime_nanos":1783255051825379098,"mode":420,"is_dir":false}},"order":["packages/metering/.turbo/turbo-build.log","packages/metering/dist","packages/metering/dist/index.d.ts","packages/metering/dist/index.d.ts.map","packages/metering/dist/index.js","packages/metering/dist/index.js.map","packages/metering/dist/metering.test.d.ts","packages/metering/dist/metering.test.d.ts.map","packages/metering/dist/metering.test.js","packages/metering/dist/metering.test.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"d572575f47998158","duration":1932,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/d572575f47998158.tar.zst vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"e57573f49057e7f1","duration":4583,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/e57573f49057e7f1.tar.zst vendored Normal file

Binary file not shown.

File diff suppressed because one or more lines are too long

View File

@@ -0,0 +1 @@
{"hash":"f065eda65a09cf0d","duration":2291,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/f065eda65a09cf0d.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/scheduler/dist/capacity.js":{"size":3044,"mtime_nanos":1783255052166378479,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.js.map":{"size":1650,"mtime_nanos":1783255052196378425,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.d.ts.map":{"size":124,"mtime_nanos":1783255052197378423,"mode":420,"is_dir":false},"packages/scheduler/dist/index.js":{"size":2244,"mtime_nanos":1783255052187378441,"mode":420,"is_dir":false},"packages/scheduler/.turbo/turbo-build.log":{"size":112,"mtime_nanos":1783255052223378375,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.js":{"size":1778,"mtime_nanos":1783255052196378425,"mode":420,"is_dir":false},"packages/scheduler/dist/types.js.map":{"size":102,"mtime_nanos":1783255052146021760,"mode":420,"is_dir":false},"packages/scheduler/dist/types.js":{"size":110,"mtime_nanos":1783255052146621830,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.d.ts.map":{"size":347,"mtime_nanos":1783255052181811181,"mode":420,"is_dir":false},"packages/scheduler/dist/scheduling.test.d.ts":{"size":56,"mtime_nanos":1783255052197378423,"mode":420,"is_dir":false},"packages/scheduler/dist/types.d.ts":{"size":615,"mtime_nanos":1783255052153378502,"mode":420,"is_dir":false},"packages/scheduler/dist/index.d.ts":{"size":431,"mtime_nanos":1783255052188378440,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.js.map":{"size":939,"mtime_nanos":1783255052178378458,"mode":420,"is_dir":false},"packages/scheduler/dist/types.d.ts.map":{"size":664,"mtime_nanos":1783255052153378502,"mode":420,"is_dir":false},"packages/scheduler/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/scheduler/dist/capacity.d.ts":{"size":1024,"mtime_nanos":1783255052173378466,"mode":420,"is_dir":false},"packages/scheduler/dist/capacity.d.ts.map":{"size":766,"mtime_nanos":1783255052173378466,"mode":420,"is_dir":false},"packages/scheduler/dist/capacity.js.map":{"size":2635,"mtime_nanos":1783255052165378481,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.d.ts":{"size":304,"mtime_nanos":1783255052181811181,"mode":420,"is_dir":false},"packages/scheduler/dist/index.d.ts.map":{"size":378,"mtime_nanos":1783255052188378440,"mode":420,"is_dir":false},"packages/scheduler/dist/index.js.map":{"size":414,"mtime_nanos":1783255052187378441,"mode":420,"is_dir":false},"packages/scheduler/dist/select-node.js":{"size":944,"mtime_nanos":1783255052180273802,"mode":420,"is_dir":false}},"order":["packages/scheduler/.turbo/turbo-build.log","packages/scheduler/dist","packages/scheduler/dist/capacity.d.ts","packages/scheduler/dist/capacity.d.ts.map","packages/scheduler/dist/capacity.js","packages/scheduler/dist/capacity.js.map","packages/scheduler/dist/index.d.ts","packages/scheduler/dist/index.d.ts.map","packages/scheduler/dist/index.js","packages/scheduler/dist/index.js.map","packages/scheduler/dist/scheduling.test.d.ts","packages/scheduler/dist/scheduling.test.d.ts.map","packages/scheduler/dist/scheduling.test.js","packages/scheduler/dist/scheduling.test.js.map","packages/scheduler/dist/select-node.d.ts","packages/scheduler/dist/select-node.d.ts.map","packages/scheduler/dist/select-node.js","packages/scheduler/dist/select-node.js.map","packages/scheduler/dist/types.d.ts","packages/scheduler/dist/types.d.ts.map","packages/scheduler/dist/types.js","packages/scheduler/dist/types.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"f0bf7376519f6918","duration":2258,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"abc4a2c6304f10abbf2d6c628ed6a63dbf9e6ca06fecaaea2935e4ea7f4ff660"}

BIN
.turbo/cache/f0bf7376519f6918.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -0,0 +1 @@
{"files":{"packages/catalog/dist/index.d.ts":{"size":444,"mtime_nanos":1783254823962792718,"mode":420,"is_dir":false},"packages/catalog/dist/index.js":{"size":1772,"mtime_nanos":1783254823962617243,"mode":420,"is_dir":false},"packages/catalog/dist":{"size":0,"mtime_nanos":0,"mode":0,"is_dir":true},"packages/catalog/dist/modrinth.d.ts.map":{"size":1722,"mtime_nanos":1783254823942792755,"mode":420,"is_dir":false},"packages/catalog/dist/modrinth.js":{"size":2292,"mtime_nanos":1783254823937826478,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.js.map":{"size":1968,"mtime_nanos":1783254823956792730,"mode":420,"is_dir":false},"packages/catalog/.turbo/turbo-build.log":{"size":104,"mtime_nanos":1783254823991792666,"mode":420,"is_dir":false},"packages/catalog/dist/index.js.map":{"size":343,"mtime_nanos":1783254823961792720,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.js":{"size":1955,"mtime_nanos":1783254823948276246,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.d.ts":{"size":59,"mtime_nanos":1783254823957792727,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.d.ts":{"size":645,"mtime_nanos":1783254823951395755,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.js":{"size":2546,"mtime_nanos":1783254823957442534,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.d.ts.map":{"size":570,"mtime_nanos":1783254823950792740,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.js.map":{"size":1649,"mtime_nanos":1783254823948276246,"mode":420,"is_dir":false},"packages/catalog/dist/modrinth.d.ts":{"size":1701,"mtime_nanos":1783254823942792755,"mode":420,"is_dir":false},"packages/catalog/dist/index.d.ts.map":{"size":383,"mtime_nanos":1783254823962792718,"mode":420,"is_dir":false},"packages/catalog/dist/compatibility.test.d.ts.map":{"size":130,"mtime_nanos":1783254823957792727,"mode":420,"is_dir":false},"packages/catalog/dist/modrinth.js.map":{"size":1972,"mtime_nanos":1783254823937641058,"mode":420,"is_dir":false}},"order":["packages/catalog/.turbo/turbo-build.log","packages/catalog/dist","packages/catalog/dist/compatibility.d.ts","packages/catalog/dist/compatibility.d.ts.map","packages/catalog/dist/compatibility.js","packages/catalog/dist/compatibility.js.map","packages/catalog/dist/compatibility.test.d.ts","packages/catalog/dist/compatibility.test.d.ts.map","packages/catalog/dist/compatibility.test.js","packages/catalog/dist/compatibility.test.js.map","packages/catalog/dist/index.d.ts","packages/catalog/dist/index.d.ts.map","packages/catalog/dist/index.js","packages/catalog/dist/index.js.map","packages/catalog/dist/modrinth.d.ts","packages/catalog/dist/modrinth.d.ts.map","packages/catalog/dist/modrinth.js","packages/catalog/dist/modrinth.js.map"]}

View File

@@ -0,0 +1 @@
{"hash":"f1d80f0b8df92657","duration":1597,"sha":"27a3ec8244e70774e6f4673201397e2302c32dfe","dirty_hash":"67d44d689fa95ed97ad8bb0d3e753762649434cb9a64ff731786cdc979515618"}

BIN
.turbo/cache/f1d80f0b8df92657.tar.zst vendored Normal file

Binary file not shown.

View File

@@ -1,4 +1,4 @@
import { Module } from '@nestjs/common';
import { forwardRef, Module } from '@nestjs/common';
import { Queue } from 'bullmq';
import Redis from 'ioredis';
@@ -20,7 +20,7 @@ import { SessionService } from './session.service';
import { SsoService } from './sso.service';
@Module({
imports: [AppConfigModule, BillingModule],
imports: [AppConfigModule, forwardRef(() => BillingModule)],
controllers: [AuthController, MeController],
providers: [
AuthService,

View File

@@ -1,5 +1,6 @@
import { Module } from '@nestjs/common';
import { forwardRef, Module } from '@nestjs/common';
import { AuthModule } from '../auth/auth.module';
import { PrismaModule } from '../prisma/prisma.module';
import { BillingController } from './billing.controller';
@@ -8,7 +9,7 @@ import { StripeWebhookController } from './stripe/stripe-webhook.controller';
import { StripeWebhookService } from './stripe/stripe-webhook.service';
@Module({
imports: [PrismaModule],
imports: [PrismaModule, forwardRef(() => AuthModule)],
controllers: [BillingController, StripeWebhookController],
providers: [BillingService, StripeWebhookService],
exports: [BillingService],

View File

@@ -27,6 +27,7 @@ async function bootstrap(): Promise<void> {
}),
{
bufferLogs: true,
bodyParser: false,
},
);
@@ -45,6 +46,9 @@ async function bootstrap(): Promise<void> {
await app.register(websocket);
const fastify = app.getHttpAdapter().getInstance();
if (fastify.hasContentTypeParser('application/json')) {
fastify.removeContentTypeParser('application/json');
}
fastify.addContentTypeParser(
'application/json',
{ parseAs: 'string' },

View File

@@ -6,17 +6,19 @@
"node": ">=22"
},
"scripts": {
"dev": "turbo run dev",
"dev": "node scripts/run-with-env.mjs turbo run dev",
"dev:bg": "bash scripts/dev-bg.sh",
"dev:stop": "bash scripts/dev-stop.sh",
"dev:infra": "docker compose -f deploy/compose/compose.dev.yml --env-file .env up -d postgres redis minio minio-init mailpit",
"build": "turbo run build",
"lint": "turbo run lint",
"typecheck": "turbo run typecheck",
"test": "turbo run test",
"db:generate": "pnpm --filter @hexahost/database db:generate",
"db:migrate": "bash -c 'set -a && source .env && set +a && pnpm --filter @hexahost/database db:migrate'",
"db:push": "bash -c 'set -a && source .env && set +a && pnpm --filter @hexahost/database db:push'",
"bootstrap:admin": "bash -c 'set -a && source .env && set +a && pnpm --filter @hexahost/database bootstrap:admin'",
"db:seed": "bash -c 'set -a && source .env && set +a && pnpm --filter @hexahost/database db:seed'"
"db:migrate": "node scripts/run-with-env.mjs pnpm --filter @hexahost/database db:migrate",
"db:push": "node scripts/run-with-env.mjs pnpm --filter @hexahost/database db:push",
"bootstrap:admin": "pnpm --filter @hexahost/auth build && node scripts/run-with-env.mjs pnpm --filter @hexahost/database bootstrap:admin",
"db:seed": "node scripts/run-with-env.mjs pnpm --filter @hexahost/database db:seed"
},
"devDependencies": {
"turbo": "^2.3.3",

View File

@@ -26,6 +26,9 @@ function parseArgs(argv: string[]): CliArgs {
for (let i = 0; i < argv.length; i += 1) {
const key = argv[i];
if (key === '--') {
continue;
}
const value = argv[i + 1];
if (key?.startsWith('--') && value) {
args[key.slice(2)] = value;
@@ -63,6 +66,29 @@ async function ensurePlatformRoles(prisma: PrismaClient): Promise<void> {
}
}
async function ensureUniqueUsername(
prisma: PrismaClient,
baseUsername: string,
): Promise<string> {
let candidate = baseUsername;
let suffix = 0;
while (true) {
const existing = await prisma.user.findUnique({
where: { username: candidate },
select: { id: true },
});
if (!existing) {
return candidate;
}
suffix += 1;
const suffixText = String(suffix);
candidate = `${baseUsername.slice(0, Math.max(1, 32 - suffixText.length))}${suffixText}`;
}
}
async function main(): Promise<void> {
const input = parseArgs(process.argv.slice(2));
const prisma = new PrismaClient();
@@ -111,6 +137,8 @@ async function main(): Promise<void> {
username = generateUsernameFromEmail(input.email);
}
username = await ensureUniqueUsername(prisma, username);
const passwordHash = await hashPassword(input.password);
const superAdminRole = await prisma.platformRole.findUniqueOrThrow({

View File

@@ -2,7 +2,6 @@
"$schema": "https://json.schemastore.org/tsconfig",
"extends": "./base.json",
"compilerOptions": {
"composite": true,
"outDir": "./dist",
"rootDir": "./src"
},

28
scripts/dev-bg.sh Executable file
View File

@@ -0,0 +1,28 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
PID_FILE="$ROOT/.logs/dev.pid"
LOG_FILE="$ROOT/.logs/dev.log"
mkdir -p "$ROOT/.logs"
if [[ -f "$PID_FILE" ]] && kill -0 "$(cat "$PID_FILE")" 2>/dev/null; then
echo "Dev server läuft bereits (PID $(cat "$PID_FILE"))."
echo "Log: $LOG_FILE"
exit 0
fi
# Next.js Dev braucht einen sauberen .next-Ordner (Production-Build stört).
rm -rf "$ROOT/apps/web/.next"
# shellcheck source=scripts/load-env.sh
source "$ROOT/scripts/load-env.sh"
cd "$ROOT"
nohup pnpm turbo run dev >"$LOG_FILE" 2>&1 &
echo $! >"$PID_FILE"
echo "Dev server gestartet (PID $(cat "$PID_FILE"))."
echo "Log: $LOG_FILE"
echo "Web: http://localhost:3000"

34
scripts/dev-stop.sh Executable file
View File

@@ -0,0 +1,34 @@
#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "$0")/.." && pwd)"
PID_FILE="$ROOT/.logs/dev.pid"
if [[ -f "$PID_FILE" ]]; then
PID="$(cat "$PID_FILE")"
if kill -0 "$PID" 2>/dev/null; then
kill "$PID" 2>/dev/null || true
sleep 1
kill -0 "$PID" 2>/dev/null && kill -9 "$PID" 2>/dev/null || true
echo "Dev server gestoppt (PID $PID)."
else
echo "Prozess $PID läuft nicht mehr."
fi
rm -f "$PID_FILE"
else
echo "Kein Dev-Server-PID-File gefunden."
fi
# Turbo/Next/Nest Kindprozesse beenden (Ports 30003003 freigeben).
pkill -f "turbo run dev" 2>/dev/null || true
pkill -f "next dev" 2>/dev/null || true
pkill -f "nest start --watch" 2>/dev/null || true
pkill -f "tsx watch src/index.ts" 2>/dev/null || true
for port in 3000 3001 3002 3003; do
if command -v fuser >/dev/null 2>&1; then
fuser -k "${port}/tcp" 2>/dev/null || true
elif command -v lsof >/dev/null 2>&1; then
lsof -ti ":${port}" -sTCP:LISTEN 2>/dev/null | xargs -r kill -9 2>/dev/null || true
fi
done

31
scripts/load-env.sh Executable file
View File

@@ -0,0 +1,31 @@
#!/usr/bin/env bash
# Loads variables from .env into the current shell via Node.
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
ENV_FILE="$ROOT/.env"
if [[ ! -f "$ENV_FILE" ]]; then
echo ".env nicht gefunden: $ENV_FILE" >&2
exit 1
fi
eval "$(
node --input-type=module -e "
import { readFileSync } from 'node:fs';
process.loadEnvFile('$ENV_FILE');
const content = readFileSync('$ENV_FILE', 'utf8');
for (const line of content.split('\n')) {
const trimmed = line.trim();
if (!trimmed || trimmed.startsWith('#')) continue;
const eq = trimmed.indexOf('=');
if (eq === -1) continue;
const key = trimmed.slice(0, eq).trim();
if (!/^[A-Za-z_][A-Za-z0-9_]*$/.test(key)) continue;
const value = process.env[key];
if (value !== undefined) {
process.stdout.write('export ' + key + '=' + JSON.stringify(value) + ';');
}
}
"
)"

25
scripts/run-with-env.mjs Normal file
View File

@@ -0,0 +1,25 @@
import { spawnSync } from 'node:child_process';
import { existsSync } from 'node:fs';
import { resolve } from 'node:path';
const root = resolve(import.meta.dirname, '..');
const envFile = resolve(root, '.env');
if (existsSync(envFile)) {
process.loadEnvFile(envFile);
}
const [command, ...args] = process.argv.slice(2);
if (!command) {
console.error('Usage: node scripts/run-with-env.mjs <command> [args...]');
process.exit(1);
}
const result = spawnSync(command, args, {
cwd: root,
stdio: 'inherit',
env: process.env,
});
process.exit(result.status ?? 1);

View File

@@ -1,5 +1,26 @@
{
"$schema": "https://turbo.build/schema.json",
"globalPassThroughEnv": [
"APP_*",
"API_*",
"DATABASE_URL",
"REDIS_URL",
"SESSION_SECRET",
"ENCRYPTION_KEY",
"SMTP_*",
"S3_*",
"NODE_*",
"LOG_LEVEL",
"BILLING_*",
"EDGE_*",
"GAME_*",
"MODRINTH_*",
"CURSEFORGE_*",
"WHMCS_*",
"RFC2136_*",
"DNS_*",
"TRAEFIK_*"
],
"tasks": {
"build": {
"dependsOn": ["^build"],
@@ -15,6 +36,7 @@
"dependsOn": ["^build"]
},
"dev": {
"dependsOn": ["^build"],
"cache": false,
"persistent": true
}