@rydr/game-sdk 8.20.0 → 8.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/client/PlatformClient.d.ts +11 -22
- package/dist/client/PlatformClient.d.ts.map +1 -1
- package/dist/client/PlatformClient.js +35 -0
- package/dist/client/PlatformClient.js.map +1 -1
- package/dist/client/Room.d.ts.map +1 -1
- package/dist/client/Room.js +58 -0
- package/dist/client/Room.js.map +1 -1
- package/dist/host/PlatformHost.d.ts +4 -1
- package/dist/host/PlatformHost.d.ts.map +1 -1
- package/dist/host/PlatformHost.js +24 -0
- package/dist/host/PlatformHost.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/protocol/guards.d.ts.map +1 -1
- package/dist/protocol/guards.js +1 -0
- package/dist/protocol/guards.js.map +1 -1
- package/dist/protocol/messages.d.ts +6 -3
- package/dist/protocol/messages.d.ts.map +1 -1
- package/dist/protocol/version.d.ts +1 -1
- package/dist/protocol/version.js +1 -1
- package/dist/training/compile.d.ts +135 -0
- package/dist/training/compile.d.ts.map +1 -0
- package/dist/training/compile.js +367 -0
- package/dist/training/compile.js.map +1 -0
- package/dist/training/index.d.ts +6 -0
- package/dist/training/index.d.ts.map +1 -0
- package/dist/training/index.js +6 -0
- package/dist/training/index.js.map +1 -0
- package/dist/training/model.d.ts +252 -0
- package/dist/training/model.d.ts.map +1 -0
- package/dist/training/model.js +261 -0
- package/dist/training/model.js.map +1 -0
- package/dist/training/protocol.d.ts +60 -0
- package/dist/training/protocol.d.ts.map +1 -0
- package/dist/training/protocol.js +2 -0
- package/dist/training/protocol.js.map +1 -0
- package/dist/training/state.d.ts +201 -0
- package/dist/training/state.d.ts.map +1 -0
- package/dist/training/state.js +55 -0
- package/dist/training/state.js.map +1 -0
- package/dist/training/zones.d.ts +50 -0
- package/dist/training/zones.d.ts.map +1 -0
- package/dist/training/zones.js +57 -0
- package/dist/training/zones.js.map +1 -0
- package/package.json +1 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zones.d.ts","sourceRoot":"","sources":["../../src/training/zones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,MAAM,WAAW,SAAS;IACxB,WAAW;IACX,IAAI,EAAE,MAAM,CAAC;IACb,mBAAmB;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,YAAY;IACZ,SAAS,EAAE,MAAM,CAAC;IAClB,6DAA6D;IAC7D,MAAM,EAAE,MAAM,CAAC;IACf,oEAAoE;IACpE,MAAM,EAAE,MAAM,CAAC;IACf,4CAA4C;IAC5C,KAAK,EAAE,MAAM,CAAC;IACd,mDAAmD;IACnD,UAAU,EAAE,MAAM,CAAC;CACpB;AAED,eAAO,MAAM,WAAW,EAAE,SAAS,SAAS,EAQlC,CAAC;AAEX;;;;;;GAMG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAOzD;AAED,0EAA0E;AAC1E,wBAAgB,YAAY,CAAC,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,MAAM,GAAG,SAAS,CAGlE;AAED;;;;;;;GAOG;AACH,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,CAEpD"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Coggan's seven power zones — the single source of truth for zone boundaries
|
|
3
|
+
* and colours in this app.
|
|
4
|
+
*
|
|
5
|
+
* These are a *coaching* convention, not a platform scale, which is why they live
|
|
6
|
+
* here and not in `@rydr/game-sdk`. (The platform's own ladder — the 1→50 rider
|
|
7
|
+
* difficulty level — is a different thing entirely and comes from
|
|
8
|
+
* `@rydr/game-sdk/difficulty`; never mix the two.)
|
|
9
|
+
*
|
|
10
|
+
* Nothing outside this file should hardcode a zone colour: a chart, a badge and a
|
|
11
|
+
* live readout showing the same effort in three different colours is exactly the
|
|
12
|
+
* bug this module exists to prevent.
|
|
13
|
+
*/
|
|
14
|
+
export const POWER_ZONES = [
|
|
15
|
+
{ zone: 1, name: "Active Recovery", shortName: "Z1", minFtp: 0, maxFtp: 0.55, color: "#94a3b8", colorLight: "rgba(148,163,184,0.25)" },
|
|
16
|
+
{ zone: 2, name: "Endurance", shortName: "Z2", minFtp: 0.55, maxFtp: 0.75, color: "#3b82f6", colorLight: "rgba(59,130,246,0.25)" },
|
|
17
|
+
{ zone: 3, name: "Tempo", shortName: "Z3", minFtp: 0.75, maxFtp: 0.9, color: "#22c55e", colorLight: "rgba(34,197,94,0.25)" },
|
|
18
|
+
{ zone: 4, name: "Threshold", shortName: "Z4", minFtp: 0.9, maxFtp: 1.05, color: "#ffba0a", colorLight: "rgba(255,186,10,0.25)" },
|
|
19
|
+
{ zone: 5, name: "VO2max", shortName: "Z5", minFtp: 1.05, maxFtp: 1.2, color: "#f97316", colorLight: "rgba(249,115,22,0.25)" },
|
|
20
|
+
{ zone: 6, name: "Anaerobic", shortName: "Z6", minFtp: 1.2, maxFtp: 1.5, color: "#ef4444", colorLight: "rgba(239,68,68,0.25)" },
|
|
21
|
+
{ zone: 7, name: "Neuromuscular", shortName: "Z7", minFtp: 1.5, maxFtp: Infinity, color: "#a855f7", colorLight: "rgba(168,85,247,0.25)" },
|
|
22
|
+
];
|
|
23
|
+
/**
|
|
24
|
+
* The zone for a power expressed as a **percentage of FTP** (120 = 120% FTP).
|
|
25
|
+
*
|
|
26
|
+
* Prefer this over {@link zoneForWatts} wherever the authored percentage is still
|
|
27
|
+
* in hand — a segment's colour then can't drift when the rider's FTP changes, and
|
|
28
|
+
* two segments authored at the same percentage always draw identically.
|
|
29
|
+
*/
|
|
30
|
+
export function zoneForPercent(percent) {
|
|
31
|
+
if (!(percent > 0))
|
|
32
|
+
return POWER_ZONES[0];
|
|
33
|
+
const ratio = percent / 100;
|
|
34
|
+
for (let i = POWER_ZONES.length - 1; i >= 0; i--) {
|
|
35
|
+
if (ratio >= POWER_ZONES[i].minFtp)
|
|
36
|
+
return POWER_ZONES[i];
|
|
37
|
+
}
|
|
38
|
+
return POWER_ZONES[0];
|
|
39
|
+
}
|
|
40
|
+
/** The zone for a live power reading in watts against an FTP in watts. */
|
|
41
|
+
export function zoneForWatts(watts, ftp) {
|
|
42
|
+
if (!(watts > 0) || !(ftp > 0))
|
|
43
|
+
return POWER_ZONES[0];
|
|
44
|
+
return zoneForPercent((watts / ftp) * 100);
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* The zone with a given number, 1–7.
|
|
48
|
+
*
|
|
49
|
+
* For the places that already hold a zone *number* — a time-in-zone tally, a
|
|
50
|
+
* legend row — and need its colour or name back. Without this they end up
|
|
51
|
+
* re-listing the colours locally, which is how a chart and its own legend come to
|
|
52
|
+
* disagree.
|
|
53
|
+
*/
|
|
54
|
+
export function zoneByNumber(zone) {
|
|
55
|
+
return POWER_ZONES[Math.min(POWER_ZONES.length, Math.max(1, Math.round(zone))) - 1];
|
|
56
|
+
}
|
|
57
|
+
//# sourceMappingURL=zones.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zones.js","sourceRoot":"","sources":["../../src/training/zones.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAmBH,MAAM,CAAC,MAAM,WAAW,GAAyB;IAC/C,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,iBAAiB,EAAE,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,CAAC,EAAK,MAAM,EAAE,IAAI,EAAM,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,wBAAwB,EAAE;IAC7I,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAQ,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAM,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,EAAE;IAC5I,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,OAAO,EAAY,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,sBAAsB,EAAE;IAC3I,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAQ,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAG,MAAM,EAAE,IAAI,EAAM,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,EAAE;IAC5I,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,QAAQ,EAAW,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,EAAE;IAC5I,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAQ,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAG,MAAM,EAAE,GAAG,EAAO,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,sBAAsB,EAAE;IAC3I,EAAE,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,eAAe,EAAI,SAAS,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,EAAG,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,SAAS,EAAE,UAAU,EAAE,uBAAuB,EAAE;CACpI,CAAC;AAEX;;;;;;GAMG;AACH,MAAM,UAAU,cAAc,CAAC,OAAe;IAC5C,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC;QAAE,OAAO,WAAW,CAAC,CAAC,CAAE,CAAC;IAC3C,MAAM,KAAK,GAAG,OAAO,GAAG,GAAG,CAAC;IAC5B,KAAK,IAAI,CAAC,GAAG,WAAW,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC;QACjD,IAAI,KAAK,IAAI,WAAW,CAAC,CAAC,CAAE,CAAC,MAAM;YAAE,OAAO,WAAW,CAAC,CAAC,CAAE,CAAC;IAC9D,CAAC;IACD,OAAO,WAAW,CAAC,CAAC,CAAE,CAAC;AACzB,CAAC;AAED,0EAA0E;AAC1E,MAAM,UAAU,YAAY,CAAC,KAAa,EAAE,GAAW;IACrD,IAAI,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,GAAG,GAAG,CAAC,CAAC;QAAE,OAAO,WAAW,CAAC,CAAC,CAAE,CAAC;IACvD,OAAO,cAAc,CAAC,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC7C,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,YAAY,CAAC,IAAY;IACvC,OAAO,WAAW,CAAC,IAAI,CAAC,GAAG,CAAC,WAAW,CAAC,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,CAAE,CAAC;AACvF,CAAC"}
|