@sessionplan/contracts 0.3.0 → 0.5.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/README.md +18 -11
- package/dist/context.d.ts +39 -5
- package/dist/context.d.ts.map +1 -1
- package/dist/exercises.d.ts +45 -2
- package/dist/exercises.d.ts.map +1 -1
- package/dist/exercises.js +177 -3
- package/dist/exercises.js.map +1 -1
- package/dist/format.d.ts +36 -0
- package/dist/format.d.ts.map +1 -0
- package/dist/format.js +101 -0
- package/dist/format.js.map +1 -0
- package/dist/index.d.ts +5 -3
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +5 -3
- package/dist/index.js.map +1 -1
- package/dist/logs.d.ts +10 -0
- package/dist/logs.d.ts.map +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# @sessionplan/contracts
|
|
2
2
|
|
|
3
|
-
Type declarations for the SessionPlan API.
|
|
3
|
+
Type declarations, closed vocabularies and shared rules for the SessionPlan API.
|
|
4
4
|
|
|
5
5
|
> **Public for installation convenience; not a stable external contract until 1.0.**
|
|
6
6
|
> These types describe the shapes exchanged between the SessionPlan API and its
|
|
@@ -27,25 +27,31 @@ import type {
|
|
|
27
27
|
} from '@sessionplan/contracts';
|
|
28
28
|
```
|
|
29
29
|
|
|
30
|
-
Besides types, the package has
|
|
30
|
+
Besides types, the package has three kinds of runtime export: `ContractVersion`, which
|
|
31
31
|
mirrors the package version so clients can report the contract revision they were
|
|
32
|
-
built against
|
|
32
|
+
built against; **closed vocabularies** as frozen `const` data
|
|
33
33
|
(`WORKSPACE_SAFETY_PROFILES`, `TRAINING_TYPES`, `MODALITIES`, `MOVEMENT_PATTERNS`,
|
|
34
|
-
`MUSCLES`, `EXERCISE_LEVELS`, `LOG_TYPES_BY_TRAINING_TYPE`
|
|
35
|
-
the same list of allowed values
|
|
34
|
+
`MUSCLES`, `EXERCISE_LEVELS`, `LOG_TYPES_BY_TRAINING_TYPE`, `LOG_TYPE_INPUTS`,
|
|
35
|
+
`DISTANCE_MODALITIES`), so every service reads the same list of allowed values; and
|
|
36
|
+
**shared rules** (`inferLogType`), so every service that picks an exercise's log type
|
|
37
|
+
picks the same one.
|
|
36
38
|
|
|
37
39
|
```ts
|
|
38
40
|
import { ContractVersion } from '@sessionplan/contracts';
|
|
39
41
|
|
|
40
|
-
console.log(ContractVersion); // "0.
|
|
42
|
+
console.log(ContractVersion); // "0.4.0"
|
|
41
43
|
```
|
|
42
44
|
|
|
43
45
|
## Scope
|
|
44
46
|
|
|
45
47
|
This package is the single source of truth for the API wire contract. It contains
|
|
46
|
-
`interface` / `type` declarations, `ContractVersion`,
|
|
47
|
-
|
|
48
|
-
|
|
48
|
+
`interface` / `type` declarations, `ContractVersion`, closed-vocabulary `const` data,
|
|
49
|
+
and a small number of shared rules. A function belongs here only when two or more
|
|
50
|
+
services must reach the same answer and a disagreement would be stored or seen by
|
|
51
|
+
the user, and only if it is pure, synchronous and total, imports nothing outside this
|
|
52
|
+
package, and ships with a case-table test. `inferLogType` is the one such rule today.
|
|
53
|
+
Runtime builders, validators, parsers of one service's own shapes, and helpers stay
|
|
54
|
+
in the API and its clients.
|
|
49
55
|
|
|
50
56
|
| Module | Covers |
|
|
51
57
|
| ------------ | ------------------------------------------------------------- |
|
|
@@ -55,7 +61,7 @@ API and its clients.
|
|
|
55
61
|
| `workspaces` | Workspace list/detail responses |
|
|
56
62
|
| `sessions` | Session create/update requests and responses |
|
|
57
63
|
| `logs` | Performance log content + `PerformanceSummary` |
|
|
58
|
-
| `exercises` | Exercise resolution and search responses
|
|
64
|
+
| `exercises` | Exercise resolution and search responses; the log type rule |
|
|
59
65
|
| `reports` | Progress report content and list/detail responses |
|
|
60
66
|
| `health` | `/health` diagnostics response |
|
|
61
67
|
| `public-catalogs` | Public location session catalog responses and provenance |
|
|
@@ -63,7 +69,7 @@ API and its clients.
|
|
|
63
69
|
## Versioning
|
|
64
70
|
|
|
65
71
|
While in `0.x`, minor versions may introduce breaking changes. Consumers pin an
|
|
66
|
-
**exact** version (`"@sessionplan/contracts": "0.
|
|
72
|
+
**exact** version (`"@sessionplan/contracts": "0.4.0"`).
|
|
67
73
|
|
|
68
74
|
**To publish a release or bump a consumer, see [`docs/runbook.md`](docs/runbook.md).**
|
|
69
75
|
It covers the publish flow (tag-triggered and manual), consumer update ordering,
|
|
@@ -75,4 +81,5 @@ breaking-change rules, and what to do about a bad published version.
|
|
|
75
81
|
npm install
|
|
76
82
|
npm run build # emit dist/ declarations + js
|
|
77
83
|
npm run typecheck # type-check without emitting
|
|
84
|
+
npm test # vitest, including the log type case table
|
|
78
85
|
```
|
package/dist/context.d.ts
CHANGED
|
@@ -48,17 +48,51 @@ export interface UnitContext {
|
|
|
48
48
|
distance: 'mi' | 'km';
|
|
49
49
|
height: 'ft' | 'cm';
|
|
50
50
|
}
|
|
51
|
+
/**
|
|
52
|
+
* One logged session of an exercise. Each measure is present only when it was
|
|
53
|
+
* recorded: a run carries `distance`, `time` and `pace` and no `load` or `reps`.
|
|
54
|
+
* Distance and pace are written in the person's current unit system.
|
|
55
|
+
*/
|
|
51
56
|
export interface ExerciseHistorySnapshot {
|
|
52
57
|
date: string;
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
58
|
+
/** Present when weight or reps were recorded; "bodyweight" when reps were recorded without weight. */
|
|
59
|
+
load?: string;
|
|
60
|
+
/** Present only when reps were recorded. */
|
|
61
|
+
reps?: number;
|
|
62
|
+
/** Present only when RPE was recorded. */
|
|
63
|
+
rpe?: number;
|
|
64
|
+
/** Number of sets logged. */
|
|
65
|
+
sets?: number;
|
|
66
|
+
/** Last set's distance, e.g. "4 mi" or "400 m". */
|
|
67
|
+
distance?: string;
|
|
68
|
+
/** Last set's time, e.g. "31:28". */
|
|
69
|
+
time?: string;
|
|
70
|
+
/** Last set's hold, e.g. "45s". */
|
|
71
|
+
hold?: string;
|
|
72
|
+
/** Pace over the sets that recorded both time and distance, e.g. "7:52 /mi". */
|
|
73
|
+
pace?: string;
|
|
56
74
|
}
|
|
75
|
+
/**
|
|
76
|
+
* An exercise's recent history for the AI. Each measure is present only when it
|
|
77
|
+
* was recorded; an absent field means not recorded, never zero.
|
|
78
|
+
*/
|
|
57
79
|
export interface ExerciseHistorySummary {
|
|
58
80
|
exercise: string;
|
|
59
81
|
lastPerformed: string;
|
|
60
|
-
|
|
61
|
-
|
|
82
|
+
/** Present when weight or reps were recorded; "bodyweight" when reps were recorded without weight. */
|
|
83
|
+
lastLoad?: string;
|
|
84
|
+
/** Present only when reps were recorded. */
|
|
85
|
+
lastReps?: number;
|
|
86
|
+
/** Number of sets in the most recent log. */
|
|
87
|
+
lastSets?: number;
|
|
88
|
+
/** Last set's distance, e.g. "4 mi" or "400 m". */
|
|
89
|
+
lastDistance?: string;
|
|
90
|
+
/** Last set's time, e.g. "31:28". */
|
|
91
|
+
lastTime?: string;
|
|
92
|
+
/** Last set's hold, e.g. "45s". */
|
|
93
|
+
lastHold?: string;
|
|
94
|
+
/** Pace over the most recent log's sets that recorded both time and distance. */
|
|
95
|
+
lastPace?: string;
|
|
62
96
|
avgRPE: number;
|
|
63
97
|
peakLoad?: string;
|
|
64
98
|
peakReps?: number;
|
package/dist/context.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAC9C,OAAO,KAAK,EACV,eAAe,EACf,sBAAsB,EACtB,0BAA0B,EAC1B,cAAc,EACf,MAAM,cAAc,CAAC;AACtB,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,WAAW,CAAC;AACjD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAM9C,MAAM,WAAW,eAAe;IAC9B,kFAAkF;IAClF,iBAAiB,EAAE,MAAM,CAAC;CAC3B;AAED,MAAM,WAAW,+BAA+B;IAC9C,wFAAwF;IACxF,UAAU,CAAC,EAAE,cAAc,EAAE,CAAC;CAC/B;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,UAAU,CAAC;IACvB,QAAQ,EAAE,eAAe,CAAC;IAC1B,eAAe,EAAE,sBAAsB,CAAC;IACxC,0BAA0B,CAAC,EAAE,0BAA0B,CAAC;IACxD,YAAY,EAAE,MAAM,EAAE,CAAC;IACvB,eAAe,CAAC,EAAE,+BAA+B,CAAC;IAClD,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,WAAW,EAAE,eAAe,CAAC;CAC9B;AAMD,MAAM,WAAW,eAAe;IAC9B,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,MAAM,CAAC,EAAE,MAAM,EAAE,CAAC;IAClB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB;AAED,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,YAAY,EAAE,UAAU,GAAG,YAAY,GAAG,OAAO,GAAG,SAAS,CAAC;IAC9D,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,eAAe,CAAC,CAAC;IAC3C,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;CAC3B;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,EAAE,UAAU,CAAC;IACnB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;IACpB,QAAQ,EAAE,IAAI,GAAG,IAAI,CAAC;IACtB,MAAM,EAAE,IAAI,GAAG,IAAI,CAAC;CACrB;AAMD,MAAM,WAAW,uBAAuB;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../src/context.ts"],"names":[],"mappings":"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"}
|
package/dist/exercises.d.ts
CHANGED
|
@@ -58,10 +58,53 @@ export declare const EXERCISE_TAGS: readonly ExerciseTag[];
|
|
|
58
58
|
export type ExerciseLevel = 'beginner' | 'intermediate' | 'advanced';
|
|
59
59
|
export declare const EXERCISE_LEVELS: readonly ExerciseLevel[];
|
|
60
60
|
/**
|
|
61
|
-
* The logger log types each training type allows when
|
|
62
|
-
*
|
|
61
|
+
* The logger log types each training type allows when a log type is chosen for
|
|
62
|
+
* an exercise whose author did not set one: the API on save, and the app on a
|
|
63
|
+
* swap or when reading an older session (see `inferLogType`). An item's explicit
|
|
64
|
+
* log type always takes precedence, and the prescription wins when nothing
|
|
65
|
+
* allowed can show a prescribed load, rep count or distance.
|
|
63
66
|
*/
|
|
64
67
|
export declare const LOG_TYPES_BY_TRAINING_TYPE: Readonly<Record<TrainingType, readonly DefaultLogType[]>>;
|
|
68
|
+
/** An input box the logger's set row renders. */
|
|
69
|
+
export type LoggerInput = 'reps' | 'weight' | 'time' | 'distance';
|
|
70
|
+
/**
|
|
71
|
+
* The boxes the logger's set row renders for each log type. `time` is a hold
|
|
72
|
+
* for `isometric`, `mobility` and `stretch`, and a clock for the rest.
|
|
73
|
+
*/
|
|
74
|
+
export declare const LOG_TYPE_INPUTS: Readonly<Record<DefaultLogType, readonly LoggerInput[]>>;
|
|
75
|
+
/** Conditioning modalities that cover ground, so default to `endurance`. */
|
|
76
|
+
export declare const DISTANCE_MODALITIES: readonly Modality[];
|
|
77
|
+
/**
|
|
78
|
+
* What was prescribed, as flags. Each service converts its own shape — a session
|
|
79
|
+
* item's prescription, or a library exercise's prescription hints — so this
|
|
80
|
+
* package parses nothing. `hold` is a hold duration; `time` is a clock.
|
|
81
|
+
*/
|
|
82
|
+
export interface PrescribedInputs {
|
|
83
|
+
reps?: boolean;
|
|
84
|
+
weight?: boolean;
|
|
85
|
+
time?: boolean;
|
|
86
|
+
hold?: boolean;
|
|
87
|
+
distance?: boolean;
|
|
88
|
+
}
|
|
89
|
+
/** The library classification the rule reads, when the exercise has an exact match. */
|
|
90
|
+
export interface LogTypeExercise {
|
|
91
|
+
training_type?: string | null;
|
|
92
|
+
modality?: string | null;
|
|
93
|
+
movement_pattern?: string | null;
|
|
94
|
+
tags?: readonly string[] | null;
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Pick the log type for an exercise whose author did not set one.
|
|
98
|
+
*
|
|
99
|
+
* With a classified library exercise, its training type sets the default and the
|
|
100
|
+
* allowed set (`LOG_TYPES_BY_TRAINING_TYPE`); the prescription then decides
|
|
101
|
+
* within that set, so a prescribed load, rep count or distance always has a box.
|
|
102
|
+
* When nothing the training type allows can show the prescribed load or distance,
|
|
103
|
+
* or would put a rep count into a hold, the prescription wins. Without a
|
|
104
|
+
* classification (no match, or a null training type) the prescription decides,
|
|
105
|
+
* with tags as the tie-break. Nothing prescribed and nothing known: `strength`.
|
|
106
|
+
*/
|
|
107
|
+
export declare function inferLogType(prescribed: PrescribedInputs, exercise?: LogTypeExercise | null): DefaultLogType;
|
|
65
108
|
/** Classification fields shared by create, update and read shapes. */
|
|
66
109
|
export interface ExerciseTaxonomyFields {
|
|
67
110
|
training_type?: TrainingType;
|
package/dist/exercises.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exercises.d.ts","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,OAAO,KAAK,EAAE,SAAS,EAAE,aAAa,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAWnD;;;GAGG;AACH,MAAM,MAAM,YAAY,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,GAAG,SAAS,CAAC;AAEhF,eAAO,MAAM,cAAc,EAAE,SAAS,YAAY,EAKxC,CAAC;AAEX,2FAA2F;AAC3F,MAAM,MAAM,QAAQ,GAChB,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,KAAK,GACL,MAAM,GACN,YAAY,GACZ,WAAW,GACX,aAAa,GACb,MAAM,GACN,QAAQ,GACR,OAAO,CAAC;AAEZ,eAAO,MAAM,UAAU,EAAE,SAAS,QAAQ,EAahC,CAAC;AAEX,+FAA+F;AAC/F,MAAM,MAAM,eAAe,GACvB,MAAM,GACN,MAAM,GACN,OAAO,GACP,OAAO,GACP,OAAO,GACP,OAAO,GACP,UAAU,GACV,eAAe,GACf,gBAAgB,GAChB,sBAAsB,CAAC;AAE3B,eAAO,MAAM,iBAAiB,EAAE,SAAS,eAAe,EAW9C,CAAC;AAEX;;;;;;;;;;;;;;GAcG;AACH,MAAM,MAAM,MAAM,GACd,OAAO,GACP,MAAM,GACN,YAAY,GACZ,OAAO,GACP,MAAM,GACN,aAAa,GACb,YAAY,GACZ,YAAY,GACZ,QAAQ,GACR,SAAS,GACT,UAAU,GACV,KAAK,GACL,UAAU,GACV,YAAY,GACZ,QAAQ,GACR,WAAW,GACX,WAAW,GACX,aAAa,GACb,OAAO,GACP,YAAY,GACZ,QAAQ,GACR,UAAU,GACV,aAAa,CAAC;AAElB,eAAO,MAAM,OAAO,EAAE,SAAS,MAAM,EAwB3B,CAAC;AAEX,mFAAmF;AACnF,eAAO,MAAM,aAAa,EAAE,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAwB1D,CAAC;AAEF;;;;GAIG;AACH,eAAO,MAAM,aAAa,EAAE,aAAa,CAAC;IAAE,KAAK,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,SAAS,MAAM,EAAE,CAAA;CAAE,CAQtF,CAAC;AAEF;;;;;;;;;GASG;AACH,MAAM,MAAM,WAAW,GACnB,UAAU,GACV,WAAW,GACX,YAAY,GACZ,WAAW,GACX,WAAW,GACX,YAAY,GACZ,WAAW,GACX,MAAM,GACN,UAAU,GACV,YAAY,GACZ,SAAS,GACT,YAAY,GACZ,OAAO,GACP,YAAY,CAAC;AAEjB,eAAO,MAAM,aAAa,EAAE,SAAS,WAAW,EAetC,CAAC;AAEX,MAAM,MAAM,aAAa,GAAG,UAAU,GAAG,cAAc,GAAG,UAAU,CAAC;AAErE,eAAO,MAAM,eAAe,EAAE,SAAS,aAAa,EAI1C,CAAC;AAEX
|
|
1
|
+
{"version":3,"file":"exercises.d.ts","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":"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"}
|
package/dist/exercises.js
CHANGED
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.LOG_TYPES_BY_TRAINING_TYPE = exports.EXERCISE_LEVELS = exports.EXERCISE_TAGS = exports.MUSCLE_GROUPS = exports.MUSCLE_LABELS = exports.MUSCLES = exports.MOVEMENT_PATTERNS = exports.MODALITIES = exports.TRAINING_TYPES = void 0;
|
|
3
|
+
exports.DISTANCE_MODALITIES = exports.LOG_TYPE_INPUTS = exports.LOG_TYPES_BY_TRAINING_TYPE = exports.EXERCISE_LEVELS = exports.EXERCISE_TAGS = exports.MUSCLE_GROUPS = exports.MUSCLE_LABELS = exports.MUSCLES = exports.MOVEMENT_PATTERNS = exports.MODALITIES = exports.TRAINING_TYPES = void 0;
|
|
4
|
+
exports.inferLogType = inferLogType;
|
|
4
5
|
exports.TRAINING_TYPES = [
|
|
5
6
|
'strength',
|
|
6
7
|
'conditioning',
|
|
@@ -120,8 +121,11 @@ exports.EXERCISE_LEVELS = [
|
|
|
120
121
|
'advanced',
|
|
121
122
|
];
|
|
122
123
|
/**
|
|
123
|
-
* The logger log types each training type allows when
|
|
124
|
-
*
|
|
124
|
+
* The logger log types each training type allows when a log type is chosen for
|
|
125
|
+
* an exercise whose author did not set one: the API on save, and the app on a
|
|
126
|
+
* swap or when reading an older session (see `inferLogType`). An item's explicit
|
|
127
|
+
* log type always takes precedence, and the prescription wins when nothing
|
|
128
|
+
* allowed can show a prescribed load, rep count or distance.
|
|
125
129
|
*/
|
|
126
130
|
exports.LOG_TYPES_BY_TRAINING_TYPE = {
|
|
127
131
|
strength: ['strength', 'isometric', 'carry'],
|
|
@@ -129,4 +133,174 @@ exports.LOG_TYPES_BY_TRAINING_TYPE = {
|
|
|
129
133
|
mobility: ['mobility', 'isometric', 'strength'],
|
|
130
134
|
stretch: ['stretch'],
|
|
131
135
|
};
|
|
136
|
+
/**
|
|
137
|
+
* The boxes the logger's set row renders for each log type. `time` is a hold
|
|
138
|
+
* for `isometric`, `mobility` and `stretch`, and a clock for the rest.
|
|
139
|
+
*/
|
|
140
|
+
exports.LOG_TYPE_INPUTS = {
|
|
141
|
+
strength: ['reps', 'weight'],
|
|
142
|
+
isometric: ['weight', 'time'],
|
|
143
|
+
conditioning: ['reps', 'time'],
|
|
144
|
+
endurance: ['time', 'distance'],
|
|
145
|
+
carry: ['weight', 'time', 'distance'],
|
|
146
|
+
mobility: ['time'],
|
|
147
|
+
stretch: ['time'],
|
|
148
|
+
};
|
|
149
|
+
/** Conditioning modalities that cover ground, so default to `endurance`. */
|
|
150
|
+
exports.DISTANCE_MODALITIES = [
|
|
151
|
+
'run',
|
|
152
|
+
'walk',
|
|
153
|
+
'row',
|
|
154
|
+
'bike',
|
|
155
|
+
'ski',
|
|
156
|
+
'swim',
|
|
157
|
+
'stairs',
|
|
158
|
+
];
|
|
159
|
+
/** Tags that name a log type, most specific first (unclassified exercises only). */
|
|
160
|
+
const LOG_TYPE_TAGS = [
|
|
161
|
+
'stretch',
|
|
162
|
+
'isometric',
|
|
163
|
+
'mobility',
|
|
164
|
+
'carry',
|
|
165
|
+
'endurance',
|
|
166
|
+
'conditioning',
|
|
167
|
+
'strength',
|
|
168
|
+
];
|
|
169
|
+
/**
|
|
170
|
+
* Pick the log type for an exercise whose author did not set one.
|
|
171
|
+
*
|
|
172
|
+
* With a classified library exercise, its training type sets the default and the
|
|
173
|
+
* allowed set (`LOG_TYPES_BY_TRAINING_TYPE`); the prescription then decides
|
|
174
|
+
* within that set, so a prescribed load, rep count or distance always has a box.
|
|
175
|
+
* When nothing the training type allows can show the prescribed load or distance,
|
|
176
|
+
* or would put a rep count into a hold, the prescription wins. Without a
|
|
177
|
+
* classification (no match, or a null training type) the prescription decides,
|
|
178
|
+
* with tags as the tie-break. Nothing prescribed and nothing known: `strength`.
|
|
179
|
+
*/
|
|
180
|
+
function inferLogType(prescribed, exercise) {
|
|
181
|
+
const tags = lowerTags(exercise?.tags);
|
|
182
|
+
const type = exercise?.training_type;
|
|
183
|
+
if (!isTrainingType(type))
|
|
184
|
+
return fromPrescription(tags, prescribed);
|
|
185
|
+
const libraryDefault = libraryLogType(type, exercise ?? {}, tags.has('isometric'));
|
|
186
|
+
if (!anyPrescribed(prescribed))
|
|
187
|
+
return libraryDefault;
|
|
188
|
+
// Topical tags are ignored once classified; `isometric` survives as the one tag
|
|
189
|
+
// that states how an exercise is performed.
|
|
190
|
+
const tieBreak = new Set([libraryDefault, type]);
|
|
191
|
+
if (tags.has('isometric'))
|
|
192
|
+
tieBreak.add('isometric');
|
|
193
|
+
const candidate = fromPrescription(tieBreak, prescribed);
|
|
194
|
+
const needed = neededInputs(prescribed);
|
|
195
|
+
const clamped = clampToTrainingType(candidate, type, needed);
|
|
196
|
+
if (!losesPrescribed(clamped, needed))
|
|
197
|
+
return clamped;
|
|
198
|
+
// Nothing the training type allows keeps the prescription: it wins.
|
|
199
|
+
if (!losesPrescribed(candidate, needed))
|
|
200
|
+
return candidate;
|
|
201
|
+
return fromPrescription(new Set(), prescribed);
|
|
202
|
+
}
|
|
203
|
+
function isTrainingType(value) {
|
|
204
|
+
return typeof value === 'string' && exports.TRAINING_TYPES.includes(value);
|
|
205
|
+
}
|
|
206
|
+
function lowerTags(tags) {
|
|
207
|
+
// Library data, not user input, but a stray null must not fail a save.
|
|
208
|
+
return new Set((tags ?? []).filter((tag) => typeof tag === 'string').map((tag) => tag.toLowerCase()));
|
|
209
|
+
}
|
|
210
|
+
function anyPrescribed(p) {
|
|
211
|
+
return Boolean(p.reps || p.weight || p.time || p.hold || p.distance);
|
|
212
|
+
}
|
|
213
|
+
/** The log type a classified exercise gets when nothing was prescribed. */
|
|
214
|
+
function libraryLogType(type, exercise, isometric) {
|
|
215
|
+
switch (type) {
|
|
216
|
+
case 'stretch':
|
|
217
|
+
return 'stretch';
|
|
218
|
+
case 'mobility':
|
|
219
|
+
return 'mobility';
|
|
220
|
+
case 'conditioning':
|
|
221
|
+
return exports.DISTANCE_MODALITIES.includes(exercise.modality ?? '')
|
|
222
|
+
? 'endurance'
|
|
223
|
+
: 'conditioning';
|
|
224
|
+
case 'strength':
|
|
225
|
+
if (exercise.movement_pattern === 'carry')
|
|
226
|
+
return 'carry';
|
|
227
|
+
return isometric ? 'isometric' : 'strength';
|
|
228
|
+
}
|
|
229
|
+
}
|
|
230
|
+
function neededInputs(p) {
|
|
231
|
+
const needed = new Set();
|
|
232
|
+
if (p.reps)
|
|
233
|
+
needed.add('reps');
|
|
234
|
+
if (p.weight)
|
|
235
|
+
needed.add('weight');
|
|
236
|
+
if (p.time || p.hold)
|
|
237
|
+
needed.add('time');
|
|
238
|
+
if (p.distance)
|
|
239
|
+
needed.add('distance');
|
|
240
|
+
return needed;
|
|
241
|
+
}
|
|
242
|
+
function shows(logType, input) {
|
|
243
|
+
return exports.LOG_TYPE_INPUTS[logType].includes(input);
|
|
244
|
+
}
|
|
245
|
+
/** A prescribed load, rep count or distance with no box to record it. */
|
|
246
|
+
function losesPrescribed(logType, needed) {
|
|
247
|
+
return ['weight', 'reps', 'distance'].some((input) => needed.has(input) && !shows(logType, input));
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Keep the log type within those the training type allows, choosing one that
|
|
251
|
+
* shows every prescribed input where one exists.
|
|
252
|
+
*/
|
|
253
|
+
function clampToTrainingType(candidate, type, needed) {
|
|
254
|
+
const allowed = exports.LOG_TYPES_BY_TRAINING_TYPE[type];
|
|
255
|
+
const covers = (lt) => [...needed].every((input) => shows(lt, input));
|
|
256
|
+
if (allowed.includes(candidate) && covers(candidate))
|
|
257
|
+
return candidate;
|
|
258
|
+
const full = allowed.find(covers);
|
|
259
|
+
if (full)
|
|
260
|
+
return full;
|
|
261
|
+
// Nothing allowed shows every prescribed input. Keep the candidate if allowed
|
|
262
|
+
// and it keeps the load, distance and reps; otherwise prefer one that does,
|
|
263
|
+
// then whichever shows most.
|
|
264
|
+
if (allowed.includes(candidate) && !losesPrescribed(candidate, needed))
|
|
265
|
+
return candidate;
|
|
266
|
+
const shown = (lt) => [...needed].filter((input) => shows(lt, input)).length;
|
|
267
|
+
const loses = (lt) => (losesPrescribed(lt, needed) ? 1 : 0);
|
|
268
|
+
const ranked = [...allowed].sort((a, b) => loses(a) - loses(b) || shown(b) - shown(a));
|
|
269
|
+
return ranked[0];
|
|
270
|
+
}
|
|
271
|
+
/** The prescription-first derivation, with `tags` as the tie-break. */
|
|
272
|
+
function fromPrescription(tags, p) {
|
|
273
|
+
// Covering ground: loaded is a carry, unloaded is endurance.
|
|
274
|
+
if (p.distance)
|
|
275
|
+
return p.weight ? 'carry' : 'endurance';
|
|
276
|
+
// A duration plus a hold tag is a hold, even alongside a rep count — the
|
|
277
|
+
// library writes these as `reps: "3-4 holds", time: "10-20s per hold"`.
|
|
278
|
+
if (p.time || p.hold) {
|
|
279
|
+
if (tags.has('isometric'))
|
|
280
|
+
return 'isometric';
|
|
281
|
+
if (tags.has('stretch'))
|
|
282
|
+
return 'stretch';
|
|
283
|
+
if (tags.has('mobility'))
|
|
284
|
+
return 'mobility';
|
|
285
|
+
}
|
|
286
|
+
// Reps are reps; unloaded reps against a clock, or a conditioning movement,
|
|
287
|
+
// want `conditioning`, which shows both.
|
|
288
|
+
if (p.reps)
|
|
289
|
+
return !p.weight && (p.time || tags.has('conditioning')) ? 'conditioning' : 'strength';
|
|
290
|
+
if (p.hold)
|
|
291
|
+
return p.weight ? 'isometric' : 'stretch';
|
|
292
|
+
if (p.time) {
|
|
293
|
+
if (p.weight || tags.has('carry'))
|
|
294
|
+
return 'carry';
|
|
295
|
+
if (tags.has('endurance'))
|
|
296
|
+
return 'endurance';
|
|
297
|
+
return 'conditioning';
|
|
298
|
+
}
|
|
299
|
+
// Nothing but a load, or nothing at all: a tag that keeps the load, else strength.
|
|
300
|
+
for (const candidate of LOG_TYPE_TAGS) {
|
|
301
|
+
if (tags.has(candidate) && (!p.weight || shows(candidate, 'weight')))
|
|
302
|
+
return candidate;
|
|
303
|
+
}
|
|
304
|
+
return 'strength';
|
|
305
|
+
}
|
|
132
306
|
//# sourceMappingURL=exercises.js.map
|
package/dist/exercises.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"exercises.js","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"exercises.js","sourceRoot":"","sources":["../src/exercises.ts"],"names":[],"mappings":"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"}
|
package/dist/format.d.ts
ADDED
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* How distance, duration and pace are written (SES-311, conditioning-exercise-history).
|
|
3
|
+
*
|
|
4
|
+
* A shared rule: the API writes these strings into exercise history and the AI's
|
|
5
|
+
* planning context, and the app writes durations in the logger and on history
|
|
6
|
+
* pages. If the two disagreed, the same run would read differently on the page
|
|
7
|
+
* and to the coach. Pure and import-free (see AGENTS.md, shared rules).
|
|
8
|
+
*/
|
|
9
|
+
import type { UnitSystem } from './common.js';
|
|
10
|
+
/**
|
|
11
|
+
* Write a distance given in metres in the person's unit system.
|
|
12
|
+
*
|
|
13
|
+
* Imperial: miles to at most two decimals from 0.1 mi up, whole yards below.
|
|
14
|
+
* Metric: whole metres below 1,000 m, kilometres to at most two decimals from
|
|
15
|
+
* there. A distance greater than zero is never written as zero. Returns '' when
|
|
16
|
+
* nothing was recorded.
|
|
17
|
+
*/
|
|
18
|
+
export declare function formatDistance(meters: number | null | undefined, unitSystem: UnitSystem): string;
|
|
19
|
+
/**
|
|
20
|
+
* Write a duration: seconds below a minute ("45s"), m:ss below an hour,
|
|
21
|
+
* h:mm:ss from an hour up. Returns '' when nothing was recorded.
|
|
22
|
+
*/
|
|
23
|
+
export declare function formatDuration(seconds: number | null | undefined): string;
|
|
24
|
+
/**
|
|
25
|
+
* Read a duration typed as h:mm:ss, m:ss (minutes may exceed 59, as before) or
|
|
26
|
+
* plain seconds with an optional "s"/"sec" suffix. Undefined when unreadable or
|
|
27
|
+
* when a minutes or seconds part that must be under 60 is not.
|
|
28
|
+
*/
|
|
29
|
+
export declare function parseDuration(input: string): number | undefined;
|
|
30
|
+
/**
|
|
31
|
+
* Write a pace as time per mile (imperial) or per kilometre (metric), rounded to
|
|
32
|
+
* the nearest second, for every kind of exercise. Callers pass only time and
|
|
33
|
+
* distance from sets that recorded both. Returns '' when either is missing.
|
|
34
|
+
*/
|
|
35
|
+
export declare function formatPace(seconds: number | null | undefined, meters: number | null | undefined, unitSystem: UnitSystem): string;
|
|
36
|
+
//# sourceMappingURL=format.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.d.ts","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,aAAa,CAAC;AAU9C;;;;;;;GAOG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAAE,UAAU,EAAE,UAAU,GAAG,MAAM,CAWhG;AAYD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,GAAG,MAAM,CAKzE;AAED;;;;GAIG;AACH,wBAAgB,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAyB/D;AAED;;;;GAIG;AACH,wBAAgB,UAAU,CACxB,OAAO,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAClC,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,UAAU,EAAE,UAAU,GACrB,MAAM,CAKR"}
|
package/dist/format.js
ADDED
|
@@ -0,0 +1,101 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.formatDistance = formatDistance;
|
|
4
|
+
exports.formatDuration = formatDuration;
|
|
5
|
+
exports.parseDuration = parseDuration;
|
|
6
|
+
exports.formatPace = formatPace;
|
|
7
|
+
const METERS_PER_MILE = 1609.344;
|
|
8
|
+
const METERS_PER_YARD = 0.9144;
|
|
9
|
+
/** Round to at most two decimals and drop trailing zeros: 3.10686 → "3.11", 4.0 → "4". */
|
|
10
|
+
function twoDecimals(value) {
|
|
11
|
+
return String(Math.round(value * 100) / 100);
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Write a distance given in metres in the person's unit system.
|
|
15
|
+
*
|
|
16
|
+
* Imperial: miles to at most two decimals from 0.1 mi up, whole yards below.
|
|
17
|
+
* Metric: whole metres below 1,000 m, kilometres to at most two decimals from
|
|
18
|
+
* there. A distance greater than zero is never written as zero. Returns '' when
|
|
19
|
+
* nothing was recorded.
|
|
20
|
+
*/
|
|
21
|
+
function formatDistance(meters, unitSystem) {
|
|
22
|
+
if (meters == null || !Number.isFinite(meters) || meters < 0)
|
|
23
|
+
return '';
|
|
24
|
+
if (unitSystem === 'imperial') {
|
|
25
|
+
const miles = meters / METERS_PER_MILE;
|
|
26
|
+
if (miles >= 0.1)
|
|
27
|
+
return `${twoDecimals(miles)} mi`;
|
|
28
|
+
const yards = Math.round(meters / METERS_PER_YARD);
|
|
29
|
+
return `${meters > 0 ? Math.max(1, yards) : 0} yd`;
|
|
30
|
+
}
|
|
31
|
+
const wholeMeters = Math.round(meters);
|
|
32
|
+
if (wholeMeters < 1000)
|
|
33
|
+
return `${meters > 0 ? Math.max(1, wholeMeters) : 0} m`;
|
|
34
|
+
return `${twoDecimals(meters / 1000)} km`;
|
|
35
|
+
}
|
|
36
|
+
/** h:mm:ss or m:ss for a whole number of seconds. */
|
|
37
|
+
function clock(totalSeconds) {
|
|
38
|
+
const hours = Math.floor(totalSeconds / 3600);
|
|
39
|
+
const minutes = Math.floor((totalSeconds % 3600) / 60);
|
|
40
|
+
const seconds = totalSeconds % 60;
|
|
41
|
+
const ss = String(seconds).padStart(2, '0');
|
|
42
|
+
if (hours > 0)
|
|
43
|
+
return `${hours}:${String(minutes).padStart(2, '0')}:${ss}`;
|
|
44
|
+
return `${minutes}:${ss}`;
|
|
45
|
+
}
|
|
46
|
+
/**
|
|
47
|
+
* Write a duration: seconds below a minute ("45s"), m:ss below an hour,
|
|
48
|
+
* h:mm:ss from an hour up. Returns '' when nothing was recorded.
|
|
49
|
+
*/
|
|
50
|
+
function formatDuration(seconds) {
|
|
51
|
+
if (seconds == null || !Number.isFinite(seconds) || seconds < 0)
|
|
52
|
+
return '';
|
|
53
|
+
const whole = Math.round(seconds);
|
|
54
|
+
if (whole < 60)
|
|
55
|
+
return `${whole}s`;
|
|
56
|
+
return clock(whole);
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Read a duration typed as h:mm:ss, m:ss (minutes may exceed 59, as before) or
|
|
60
|
+
* plain seconds with an optional "s"/"sec" suffix. Undefined when unreadable or
|
|
61
|
+
* when a minutes or seconds part that must be under 60 is not.
|
|
62
|
+
*/
|
|
63
|
+
function parseDuration(input) {
|
|
64
|
+
const trimmed = input.trim();
|
|
65
|
+
if (!trimmed)
|
|
66
|
+
return undefined;
|
|
67
|
+
const hms = trimmed.match(/^(\d+):(\d{1,2}):(\d{1,2})$/);
|
|
68
|
+
if (hms) {
|
|
69
|
+
const hours = parseInt(hms[1], 10);
|
|
70
|
+
const minutes = parseInt(hms[2], 10);
|
|
71
|
+
const seconds = parseInt(hms[3], 10);
|
|
72
|
+
if (minutes >= 60 || seconds >= 60)
|
|
73
|
+
return undefined;
|
|
74
|
+
return hours * 3600 + minutes * 60 + seconds;
|
|
75
|
+
}
|
|
76
|
+
const ms = trimmed.match(/^(\d+):(\d{1,2})$/);
|
|
77
|
+
if (ms) {
|
|
78
|
+
const minutes = parseInt(ms[1], 10);
|
|
79
|
+
const seconds = parseInt(ms[2], 10);
|
|
80
|
+
if (seconds >= 60)
|
|
81
|
+
return undefined;
|
|
82
|
+
return minutes * 60 + seconds;
|
|
83
|
+
}
|
|
84
|
+
const plain = trimmed.match(/^(\d+)\s*(s|sec)?$/i);
|
|
85
|
+
if (plain)
|
|
86
|
+
return parseInt(plain[1], 10);
|
|
87
|
+
return undefined;
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Write a pace as time per mile (imperial) or per kilometre (metric), rounded to
|
|
91
|
+
* the nearest second, for every kind of exercise. Callers pass only time and
|
|
92
|
+
* distance from sets that recorded both. Returns '' when either is missing.
|
|
93
|
+
*/
|
|
94
|
+
function formatPace(seconds, meters, unitSystem) {
|
|
95
|
+
if (seconds == null || meters == null || !(seconds > 0) || !(meters > 0))
|
|
96
|
+
return '';
|
|
97
|
+
const units = unitSystem === 'imperial' ? meters / METERS_PER_MILE : meters / 1000;
|
|
98
|
+
const perUnit = Math.round(seconds / units);
|
|
99
|
+
return `${clock(perUnit)} /${unitSystem === 'imperial' ? 'mi' : 'km'}`;
|
|
100
|
+
}
|
|
101
|
+
//# sourceMappingURL=format.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"format.js","sourceRoot":"","sources":["../src/format.ts"],"names":[],"mappings":";;AA0BA,wCAWC;AAgBD,wCAKC;AAOD,sCAyBC;AAOD,gCASC;AAhGD,MAAM,eAAe,GAAG,QAAQ,CAAC;AACjC,MAAM,eAAe,GAAG,MAAM,CAAC;AAE/B,0FAA0F;AAC1F,SAAS,WAAW,CAAC,KAAa;IAChC,OAAO,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,KAAK,GAAG,GAAG,CAAC,GAAG,GAAG,CAAC,CAAC;AAC/C,CAAC;AAED;;;;;;;GAOG;AACH,SAAgB,cAAc,CAAC,MAAiC,EAAE,UAAsB;IACtF,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,IAAI,MAAM,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IACxE,IAAI,UAAU,KAAK,UAAU,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,MAAM,GAAG,eAAe,CAAC;QACvC,IAAI,KAAK,IAAI,GAAG;YAAE,OAAO,GAAG,WAAW,CAAC,KAAK,CAAC,KAAK,CAAC;QACpD,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC;QACnD,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC;IACrD,CAAC;IACD,MAAM,WAAW,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;IACvC,IAAI,WAAW,GAAG,IAAI;QAAE,OAAO,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;IAChF,OAAO,GAAG,WAAW,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC;AAC5C,CAAC;AAED,qDAAqD;AACrD,SAAS,KAAK,CAAC,YAAoB;IACjC,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,YAAY,GAAG,IAAI,CAAC,CAAC;IAC9C,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC,CAAC;IACvD,MAAM,OAAO,GAAG,YAAY,GAAG,EAAE,CAAC;IAClC,MAAM,EAAE,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IAC5C,IAAI,KAAK,GAAG,CAAC;QAAE,OAAO,GAAG,KAAK,IAAI,MAAM,CAAC,OAAO,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,IAAI,EAAE,EAAE,CAAC;IAC3E,OAAO,GAAG,OAAO,IAAI,EAAE,EAAE,CAAC;AAC5B,CAAC;AAED;;;GAGG;AACH,SAAgB,cAAc,CAAC,OAAkC;IAC/D,IAAI,OAAO,IAAI,IAAI,IAAI,CAAC,MAAM,CAAC,QAAQ,CAAC,OAAO,CAAC,IAAI,OAAO,GAAG,CAAC;QAAE,OAAO,EAAE,CAAC;IAC3E,MAAM,KAAK,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAClC,IAAI,KAAK,GAAG,EAAE;QAAE,OAAO,GAAG,KAAK,GAAG,CAAC;IACnC,OAAO,KAAK,CAAC,KAAK,CAAC,CAAC;AACtB,CAAC;AAED;;;;GAIG;AACH,SAAgB,aAAa,CAAC,KAAa;IACzC,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,EAAE,CAAC;IAC7B,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAE/B,MAAM,GAAG,GAAG,OAAO,CAAC,KAAK,CAAC,6BAA6B,CAAC,CAAC;IACzD,IAAI,GAAG,EAAE,CAAC;QACR,MAAM,KAAK,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACnC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,MAAM,OAAO,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACrC,IAAI,OAAO,IAAI,EAAE,IAAI,OAAO,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC;QACrD,OAAO,KAAK,GAAG,IAAI,GAAG,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;IAC/C,CAAC;IAED,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,mBAAmB,CAAC,CAAC;IAC9C,IAAI,EAAE,EAAE,CAAC;QACP,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,MAAM,OAAO,GAAG,QAAQ,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;QACpC,IAAI,OAAO,IAAI,EAAE;YAAE,OAAO,SAAS,CAAC;QACpC,OAAO,OAAO,GAAG,EAAE,GAAG,OAAO,CAAC;IAChC,CAAC;IAED,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACnD,IAAI,KAAK;QAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC;IAEzC,OAAO,SAAS,CAAC;AACnB,CAAC;AAED;;;;GAIG;AACH,SAAgB,UAAU,CACxB,OAAkC,EAClC,MAAiC,EACjC,UAAsB;IAEtB,IAAI,OAAO,IAAI,IAAI,IAAI,MAAM,IAAI,IAAI,IAAI,CAAC,CAAC,OAAO,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC;QAAE,OAAO,EAAE,CAAC;IACpF,MAAM,KAAK,GAAG,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,MAAM,GAAG,eAAe,CAAC,CAAC,CAAC,MAAM,GAAG,IAAI,CAAC;IACnF,MAAM,OAAO,GAAG,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,KAAK,CAAC,CAAC;IAC5C,OAAO,GAAG,KAAK,CAAC,OAAO,CAAC,KAAK,UAAU,KAAK,UAAU,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;AACzE,CAAC"}
|
package/dist/index.d.ts
CHANGED
|
@@ -2,8 +2,9 @@
|
|
|
2
2
|
* @sessionplan/contracts
|
|
3
3
|
*
|
|
4
4
|
* Shared TypeScript wire contracts for the SessionPlan API. Types, the
|
|
5
|
-
* `ContractVersion` constant below,
|
|
6
|
-
*
|
|
5
|
+
* `ContractVersion` constant below, closed-vocabulary `const` data, and shared
|
|
6
|
+
* rules — pure, import-free functions that two or more services must agree on
|
|
7
|
+
* (see AGENTS.md for the four conditions).
|
|
7
8
|
*
|
|
8
9
|
* Public for installation convenience; not a stable external contract until 1.0.
|
|
9
10
|
*/
|
|
@@ -17,9 +18,10 @@ export * from './exercises.js';
|
|
|
17
18
|
export * from './reports.js';
|
|
18
19
|
export * from './health.js';
|
|
19
20
|
export * from './public-catalogs.js';
|
|
21
|
+
export * from './format.js';
|
|
20
22
|
/**
|
|
21
23
|
* The contract revision this build was published at. Mirrors package.json
|
|
22
24
|
* version so clients can report the contract they were compiled against.
|
|
23
25
|
*/
|
|
24
|
-
export declare const ContractVersion = "0.
|
|
26
|
+
export declare const ContractVersion = "0.5.0";
|
|
25
27
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG;AAEH,cAAc,aAAa,CAAC;AAC5B,cAAc,cAAc,CAAC;AAC7B,cAAc,cAAc,CAAC;AAC7B,cAAc,iBAAiB,CAAC;AAChC,cAAc,eAAe,CAAC;AAC9B,cAAc,WAAW,CAAC;AAC1B,cAAc,gBAAgB,CAAC;AAC/B,cAAc,cAAc,CAAC;AAC7B,cAAc,aAAa,CAAC;AAC5B,cAAc,sBAAsB,CAAC;AACrC,cAAc,aAAa,CAAC;AAE5B;;;GAGG;AACH,eAAO,MAAM,eAAe,UAAU,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -3,8 +3,9 @@
|
|
|
3
3
|
* @sessionplan/contracts
|
|
4
4
|
*
|
|
5
5
|
* Shared TypeScript wire contracts for the SessionPlan API. Types, the
|
|
6
|
-
* `ContractVersion` constant below,
|
|
7
|
-
*
|
|
6
|
+
* `ContractVersion` constant below, closed-vocabulary `const` data, and shared
|
|
7
|
+
* rules — pure, import-free functions that two or more services must agree on
|
|
8
|
+
* (see AGENTS.md for the four conditions).
|
|
8
9
|
*
|
|
9
10
|
* Public for installation convenience; not a stable external contract until 1.0.
|
|
10
11
|
*/
|
|
@@ -34,9 +35,10 @@ __exportStar(require("./exercises.js"), exports);
|
|
|
34
35
|
__exportStar(require("./reports.js"), exports);
|
|
35
36
|
__exportStar(require("./health.js"), exports);
|
|
36
37
|
__exportStar(require("./public-catalogs.js"), exports);
|
|
38
|
+
__exportStar(require("./format.js"), exports);
|
|
37
39
|
/**
|
|
38
40
|
* The contract revision this build was published at. Mirrors package.json
|
|
39
41
|
* version so clients can report the contract they were compiled against.
|
|
40
42
|
*/
|
|
41
|
-
exports.ContractVersion = '0.
|
|
43
|
+
exports.ContractVersion = '0.5.0';
|
|
42
44
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA;;;;;;;;;GASG;;;;;;;;;;;;;;;;;AAEH,8CAA4B;AAC5B,+CAA6B;AAC7B,+CAA6B;AAC7B,kDAAgC;AAChC,gDAA8B;AAC9B,4CAA0B;AAC1B,iDAA+B;AAC/B,+CAA6B;AAC7B,8CAA4B;AAC5B,uDAAqC;AACrC,8CAA4B;AAE5B;;;GAGG;AACU,QAAA,eAAe,GAAG,OAAO,CAAC"}
|
package/dist/logs.d.ts
CHANGED
|
@@ -78,6 +78,16 @@ export interface ExerciseSummary {
|
|
|
78
78
|
avgRpe?: number;
|
|
79
79
|
maxWeight?: number;
|
|
80
80
|
totalVolume: number;
|
|
81
|
+
/** Seconds of time recorded across the counted sets. Absent when none was recorded. */
|
|
82
|
+
totalTimeSeconds?: number;
|
|
83
|
+
/** Seconds of hold recorded across the counted sets. Absent when none was recorded. */
|
|
84
|
+
totalHoldSeconds?: number;
|
|
85
|
+
/** Metres recorded across the counted sets (miles converted). Absent when none was recorded. */
|
|
86
|
+
totalDistanceMeters?: number;
|
|
87
|
+
/** Time of the sets that recorded both time and distance — the only sets pace is computed from. */
|
|
88
|
+
pacedTimeSeconds?: number;
|
|
89
|
+
/** Distance in metres of the sets that recorded both time and distance. */
|
|
90
|
+
pacedDistanceMeters?: number;
|
|
81
91
|
jsonPaths?: string[];
|
|
82
92
|
}
|
|
83
93
|
/** Full performance log content (perf-2 format). */
|
package/dist/logs.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"logs.d.ts","sourceRoot":"","sources":["../src/logs.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@sessionplan/contracts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.5.0",
|
|
4
4
|
"description": "Shared TypeScript wire contracts for the SessionPlan API. Public for installation convenience; not a stable external contract until 1.0.",
|
|
5
5
|
"license": "UNLICENSED",
|
|
6
6
|
"main": "dist/index.js",
|