zkldi 0e36b17827 fix(critical): Pin prudence to an exact version
This is a long one.

So, `instanceof` in Typescript is incredibly flimsy. There's a
documented bug with what happens when you extend built-in classes, such
as Error or Array. You can read more about it here: https://github.com/Microsoft/TypeScript/wiki/FAQ#why-doesnt-extending-built-ins-like-error-array-and-map-work

However, this normally works fine. A previous commit moved some schemas
from server/ to common/, our gameSpecific UGPT settings schemas. This
caused them to break in an interesting way. For any schema recursive
with a depth greater than 1, all errors would be ignored. Why on earth
was this happening?

Well Prudence passes errors up the stack with a "return Err" -> "if
ret instanceof Err: return Err" kind of approach. This normally works
fine.

The real kicker here is that because server/ and common/ were on 0.9.7
and 0.9.8 respectively, the "Err" instance in question would actually be
erased when ran at runtime. The "if ret instance of Err" would fail,
because the Err would be from 0.9.7, not 0.9.8. This subtle difference
in file results in catastrophic damage.

In short. InstanceOf is a footgun. I hate it. Lets never do it again.
Thanks.
2022-10-14 01:09:31 +01:00
2022-10-14 00:04:34 +01:00
2022-07-16 18:27:36 +01:00
2022-07-04 12:11:33 +01:00
2022-08-18 04:31:10 +01:00

Tachi

This is the main monorepo for Tachi.

What is Tachi?

Tachi is a modern, powerful, modular Rhythm Game Score Tracker.

In short, it does the things that people would otherwise make spreadsheets for.

Tachi is a score tracker and analyser for various rhythm games. It was designed out of a dislike for existing websites that display your scores. I think that scores are integral to the rhythm game experience, and that displaying them properly is just as important!

By using Tachi, you get access to powerful, novel rhythm game score-tracking features, like automatically breaking your scores into sessions, setting goals and rivals, and more!

There are way more features that Tachi has, and you can read about all of them here.

Setup

Check the Documentation for how to set Tachi up.

You can then check the component-specific guides to see how to run those components and contribute back.

Repository Info

This monorepo contains the following codebases:

  • client/, Which is a React frontend for Tachi.

The client and the server are fairly decoupled. Someone could trivially create their own frontend client for Tachi.

  • server/, Which is an Express-Typescript backend for Tachi.

This contains all of our API calls, and interfaces with our database, and powers the actual score import engine.

  • database-seeds/, Which is a git-tracked set of data to be synced with Tachi.

This is the source of truth for the songs, charts, and more on the site! By submitting PRs to this, you can fix bugs on the website, add new charts, and more.

  • bot/, Which is a discord bot frontend for Tachi.

  • common/, Which contains common types, utils and functions shared between all other packages.

This is also published to NPM when it hits production.

  • docs/, Which contains Tachi documentation.

  • sieglinde/, Which contains our BMS/PMS analysis functions.

S
Description
No description provided
Readme
1.2 GiB
Languages
TypeScript 91.3%
Shell 3%
SCSS 2.6%
JavaScript 2.2%
Java 0.3%
Other 0.5%