ropegeo-common 1.16.2 → 1.17.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 +21 -13
- package/dist/models/api/params/acaDifficultyParams.d.ts +8 -8
- package/dist/models/api/params/acaDifficultyParams.d.ts.map +1 -1
- package/dist/models/api/params/acaDifficultyParams.js +13 -13
- package/dist/models/api/params/difficultyParams.d.ts +5 -5
- package/dist/models/api/params/difficultyParams.d.ts.map +1 -1
- package/dist/models/api/params/difficultyParams.js +3 -3
- package/dist/models/difficulty/acaDifficultyRating.d.ts +31 -0
- package/dist/models/difficulty/acaDifficultyRating.d.ts.map +1 -0
- package/dist/models/difficulty/acaDifficultyRating.js +113 -0
- package/dist/models/difficulty/{acaRatings.d.ts → acaSubRatings.d.ts} +10 -10
- package/dist/models/difficulty/acaSubRatings.d.ts.map +1 -0
- package/dist/models/difficulty/acaSubRatings.js +78 -0
- package/dist/models/difficulty/difficultyRating.d.ts +29 -0
- package/dist/models/difficulty/difficultyRating.d.ts.map +1 -0
- package/dist/models/difficulty/difficultyRating.js +65 -0
- package/dist/models/difficulty/registerDifficultyRatingParsers.d.ts +7 -0
- package/dist/models/difficulty/registerDifficultyRatingParsers.d.ts.map +1 -0
- package/dist/models/difficulty/registerDifficultyRatingParsers.js +8 -0
- package/dist/models/filters/acaDifficultyFilterOptions.d.ts +15 -15
- package/dist/models/filters/acaDifficultyFilterOptions.d.ts.map +1 -1
- package/dist/models/filters/acaDifficultyFilterOptions.js +15 -15
- package/dist/models/filters/difficultyFilterOptions.d.ts +6 -6
- package/dist/models/filters/difficultyFilterOptions.d.ts.map +1 -1
- package/dist/models/filters/difficultyFilterOptions.js +6 -6
- package/dist/models/index.d.ts +26 -12
- package/dist/models/index.d.ts.map +1 -1
- package/dist/models/index.js +54 -32
- package/dist/models/mobile/savedPage.js +10 -10
- package/dist/models/pageViews/offlineRopewikiPageView.d.ts +1 -1
- package/dist/models/pageViews/offlineRopewikiPageView.d.ts.map +1 -1
- package/dist/models/pageViews/offlineRopewikiPageView.js +3 -3
- package/dist/models/pageViews/onlineRopewikiPageView.d.ts +1 -1
- package/dist/models/pageViews/onlineRopewikiPageView.d.ts.map +1 -1
- package/dist/models/pageViews/onlineRopewikiPageView.js +4 -4
- package/dist/models/pageViews/ropewikiPageView.d.ts +5 -5
- package/dist/models/pageViews/ropewikiPageView.d.ts.map +1 -1
- package/dist/models/pageViews/ropewikiPageView.js +13 -13
- package/dist/models/previews/offlinePagePreview.d.ts +1 -1
- package/dist/models/previews/offlinePagePreview.d.ts.map +1 -1
- package/dist/models/previews/offlinePagePreview.js +2 -2
- package/dist/models/previews/onlinePagePreview.d.ts +1 -1
- package/dist/models/previews/onlinePagePreview.d.ts.map +1 -1
- package/dist/models/previews/onlinePagePreview.js +3 -3
- package/dist/models/previews/pagePreview.d.ts +7 -7
- package/dist/models/previews/pagePreview.d.ts.map +1 -1
- package/dist/models/previews/pagePreview.js +19 -16
- package/package.json +1 -1
- package/dist/models/difficulty/acaDifficulty.d.ts +0 -31
- package/dist/models/difficulty/acaDifficulty.d.ts.map +0 -1
- package/dist/models/difficulty/acaDifficulty.js +0 -110
- package/dist/models/difficulty/acaRatings.d.ts.map +0 -1
- package/dist/models/difficulty/acaRatings.js +0 -78
- package/dist/models/difficulty/difficulty.d.ts +0 -25
- package/dist/models/difficulty/difficulty.d.ts.map +0 -1
- package/dist/models/difficulty/difficulty.js +0 -55
- package/dist/models/difficulty/registerDifficultyParsers.d.ts +0 -7
- package/dist/models/difficulty/registerDifficultyParsers.d.ts.map +0 -1
- package/dist/models/difficulty/registerDifficultyParsers.js +0 -8
package/README.md
CHANGED
|
@@ -83,23 +83,31 @@ Helper tables use columns **Name**, **Description**, **Import**. Model tables ad
|
|
|
83
83
|
|
|
84
84
|
| Name | Base class | Description | Import |
|
|
85
85
|
| --- | --- | --- | --- |
|
|
86
|
-
| `
|
|
87
|
-
| `
|
|
88
|
-
| `
|
|
86
|
+
| `DifficultyRatingSystem` | N/A | Discriminator for difficulty rating scales (e.g. ACA). | `import { DifficultyRatingSystem } from 'ropegeo-common/models'` |
|
|
87
|
+
| `DifficultyRating` | N/A | Abstract base for page/route difficulty ratings; `fromResult` dispatches by `difficultyRatingSystem`. | `import { DifficultyRating } from 'ropegeo-common/models'` |
|
|
88
|
+
| `resolveDifficultyRatingFromRecord` | N/A | Reads nested difficulty rating JSON from `difficultyRating` or legacy `difficulty` keys. | `import { resolveDifficultyRatingFromRecord } from 'ropegeo-common/models'` |
|
|
89
|
+
| `registerDifficultyParser` | N/A | Registers a `DifficultyRating.fromResult` parser for a `DifficultyRatingSystem`. | `import { registerDifficultyParser } from 'ropegeo-common/models'` |
|
|
89
90
|
| `ACA_RISK_ORDER` | N/A | Numeric total order for ACA risk ratings. | `import { ACA_RISK_ORDER } from 'ropegeo-common/models'` |
|
|
90
91
|
| `ACA_TECHNICAL_ORDER` | N/A | Numeric total order for ACA technical ratings. | `import { ACA_TECHNICAL_ORDER } from 'ropegeo-common/models'` |
|
|
91
92
|
| `ACA_TIME_ORDER` | N/A | Numeric total order for ACA time ratings. | `import { ACA_TIME_ORDER } from 'ropegeo-common/models'` |
|
|
92
93
|
| `ACA_WATER_ORDER` | N/A | Numeric total order for ACA water ratings. | `import { ACA_WATER_ORDER } from 'ropegeo-common/models'` |
|
|
93
|
-
| `
|
|
94
|
-
| `
|
|
95
|
-
| `
|
|
96
|
-
| `
|
|
94
|
+
| `AcaTechnicalSubRating` | N/A | ACA technical sub-rating enum (1–4). | `import { AcaTechnicalSubRating } from 'ropegeo-common/models'` |
|
|
95
|
+
| `AcaWaterSubRating` | N/A | ACA water sub-rating enum. | `import { AcaWaterSubRating } from 'ropegeo-common/models'` |
|
|
96
|
+
| `AcaTimeSubRating` | N/A | ACA time sub-rating enum (I–VI). | `import { AcaTimeSubRating } from 'ropegeo-common/models'` |
|
|
97
|
+
| `AcaRiskSubRating` | N/A | ACA risk sub-rating enum. | `import { AcaRiskSubRating } from 'ropegeo-common/models'` |
|
|
97
98
|
| `RISK_ORDER` | N/A | Deprecated alias for `ACA_RISK_ORDER`. | `import { RISK_ORDER } from 'ropegeo-common/models'` |
|
|
98
|
-
| `
|
|
99
|
-
| `
|
|
100
|
-
| `
|
|
101
|
-
| `
|
|
102
|
-
| `
|
|
99
|
+
| `AcaDifficultyRating` | `DifficultyRating` | ACA difficulty rating from DB/API strings; raw vs effective risk. | `import { AcaDifficultyRating } from 'ropegeo-common/models'` |
|
|
100
|
+
| `DifficultyType` | N/A | Deprecated alias for `DifficultyRatingSystem`. | `import { DifficultyType } from 'ropegeo-common/models'` |
|
|
101
|
+
| `Difficulty` | N/A | Deprecated alias for `DifficultyRating`. | `import { Difficulty } from 'ropegeo-common/models'` |
|
|
102
|
+
| `AcaDifficulty` | N/A | Deprecated alias for `AcaDifficultyRating`. | `import { AcaDifficulty } from 'ropegeo-common/models'` |
|
|
103
|
+
| `AcaTechnicalRating` | N/A | Deprecated alias for `AcaTechnicalSubRating`. | `import { AcaTechnicalRating } from 'ropegeo-common/models'` |
|
|
104
|
+
| `AcaWaterRating` | N/A | Deprecated alias for `AcaWaterSubRating`. | `import { AcaWaterRating } from 'ropegeo-common/models'` |
|
|
105
|
+
| `AcaTimeRating` | N/A | Deprecated alias for `AcaTimeSubRating`. | `import { AcaTimeRating } from 'ropegeo-common/models'` |
|
|
106
|
+
| `AcaRiskRating` | N/A | Deprecated alias for `AcaRiskSubRating`. | `import { AcaRiskRating } from 'ropegeo-common/models'` |
|
|
107
|
+
| `DifficultyTechnical` | N/A | Deprecated alias for `AcaTechnicalSubRating`. | `import { DifficultyTechnical } from 'ropegeo-common/models'` |
|
|
108
|
+
| `DifficultyWater` | N/A | Deprecated alias for `AcaWaterSubRating`. | `import { DifficultyWater } from 'ropegeo-common/models'` |
|
|
109
|
+
| `DifficultyTime` | N/A | Deprecated alias for `AcaTimeSubRating`. | `import { DifficultyTime } from 'ropegeo-common/models'` |
|
|
110
|
+
| `DifficultyRisk` | N/A | Deprecated alias for `AcaRiskSubRating`. | `import { DifficultyRisk } from 'ropegeo-common/models'` |
|
|
103
111
|
|
|
104
112
|
### API query parameters (`src/models/api/params/`)
|
|
105
113
|
|
|
@@ -110,7 +118,7 @@ Helper tables use columns **Name**, **Description**, **Import**. Model tables ad
|
|
|
110
118
|
| `DifficultyParams` | N/A | Abstract GET-query difficulty filter; `fromQueryStringParams` / `fromResult`. | `import { DifficultyParams } from 'ropegeo-common/models'` |
|
|
111
119
|
| `DifficultyParamsQueryRecord` | N/A | Flat string map for difficulty query parsing. | `import type { DifficultyParamsQueryRecord } from 'ropegeo-common/models'` |
|
|
112
120
|
| `registerDifficultyParamsQueryInference` | N/A | Registers inference when `difficulty-type` is omitted. | `import { registerDifficultyParamsQueryInference } from 'ropegeo-common/models'` |
|
|
113
|
-
| `registerDifficultyParamsQueryParser` | N/A | Registers a query parser for a `
|
|
121
|
+
| `registerDifficultyParamsQueryParser` | N/A | Registers a query parser for a `DifficultyRatingSystem`. | `import { registerDifficultyParamsQueryParser } from 'ropegeo-common/models'` |
|
|
114
122
|
| `isDifficultyParamsActive` | N/A | True if difficulty params are non-null and active. | `import { isDifficultyParamsActive } from 'ropegeo-common/models'` |
|
|
115
123
|
| `AcaDifficultyParams` | `DifficultyParams` | ACA pipe-list allow-lists for routes/search query strings. | `import { AcaDifficultyParams } from 'ropegeo-common/models'` |
|
|
116
124
|
| `Q_DIFFICULTY_TYPE` | N/A | Query key constant for difficulty type. | `import { Q_DIFFICULTY_TYPE } from 'ropegeo-common/models'` |
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
1
|
+
import { DifficultyRatingSystem } from '../../difficulty/difficultyRating';
|
|
2
|
+
import { AcaRiskSubRating, AcaTechnicalSubRating, AcaTimeSubRating, AcaWaterSubRating } from '../../difficulty/acaSubRatings';
|
|
3
3
|
import { DifficultyParams, type DifficultyParamsQueryRecord } from './difficultyParams';
|
|
4
4
|
export declare const Q_DIFFICULTY_TYPE = "difficulty-type";
|
|
5
5
|
export declare const Q_ACA_TECHNICAL = "aca-technical-rating";
|
|
@@ -7,12 +7,12 @@ export declare const Q_ACA_WATER = "aca-water-rating";
|
|
|
7
7
|
export declare const Q_ACA_TIME = "aca-time-rating";
|
|
8
8
|
export declare const Q_ACA_RISK = "aca-risk-rating";
|
|
9
9
|
export declare class AcaDifficultyParams extends DifficultyParams {
|
|
10
|
-
readonly difficultyType =
|
|
11
|
-
readonly technical:
|
|
12
|
-
readonly water:
|
|
13
|
-
readonly time:
|
|
14
|
-
readonly effectiveRisk:
|
|
15
|
-
constructor(technical:
|
|
10
|
+
readonly difficultyType = DifficultyRatingSystem.ACA;
|
|
11
|
+
readonly technical: AcaTechnicalSubRating[];
|
|
12
|
+
readonly water: AcaWaterSubRating[];
|
|
13
|
+
readonly time: AcaTimeSubRating[];
|
|
14
|
+
readonly effectiveRisk: AcaRiskSubRating[];
|
|
15
|
+
constructor(technical: AcaTechnicalSubRating[], water: AcaWaterSubRating[], time: AcaTimeSubRating[], effectiveRisk: AcaRiskSubRating[]);
|
|
16
16
|
isActive(): boolean;
|
|
17
17
|
toQueryString(): string;
|
|
18
18
|
static fromQueryStringParams(q: DifficultyParamsQueryRecord): AcaDifficultyParams;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"acaDifficultyParams.d.ts","sourceRoot":"","sources":["../../../../src/models/api/params/acaDifficultyParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"acaDifficultyParams.d.ts","sourceRoot":"","sources":["../../../../src/models/api/params/acaDifficultyParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAC3E,OAAO,EACH,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACpB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EACH,gBAAgB,EAChB,KAAK,2BAA2B,EAGnC,MAAM,oBAAoB,CAAC;AAE5B,eAAO,MAAM,iBAAiB,oBAAoB,CAAC;AACnD,eAAO,MAAM,eAAe,yBAAyB,CAAC;AACtD,eAAO,MAAM,WAAW,qBAAqB,CAAC;AAC9C,eAAO,MAAM,UAAU,oBAAoB,CAAC;AAC5C,eAAO,MAAM,UAAU,oBAAoB,CAAC;AA8C5C,qBAAa,mBAAoB,SAAQ,gBAAgB;IACrD,QAAQ,CAAC,cAAc,8BAA8B;IAErD,QAAQ,CAAC,SAAS,EAAE,qBAAqB,EAAE,CAAC;IAC5C,QAAQ,CAAC,KAAK,EAAE,iBAAiB,EAAE,CAAC;IACpC,QAAQ,CAAC,IAAI,EAAE,gBAAgB,EAAE,CAAC;IAClC,QAAQ,CAAC,aAAa,EAAE,gBAAgB,EAAE,CAAC;gBAGvC,SAAS,EAAE,qBAAqB,EAAE,EAClC,KAAK,EAAE,iBAAiB,EAAE,EAC1B,IAAI,EAAE,gBAAgB,EAAE,EACxB,aAAa,EAAE,gBAAgB,EAAE;IASrC,QAAQ,IAAI,OAAO;IASnB,aAAa,IAAI,MAAM;IAwBvB,MAAM,CAAC,qBAAqB,CACxB,CAAC,EAAE,2BAA2B,GAC/B,mBAAmB;IAwBtB,OAAO,CAAC,MAAM,CAAC,cAAc;IAW7B,uFAAuF;IACvF,MAAM,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,mBAAmB;IAgCpE,kEAAkE;IAClE,MAAM,CAAC,cAAc,CACjB,MAAM,EAAE,mBAAmB,GAAG,IAAI,GACnC,mBAAmB,GAAG,IAAI;CAIhC"}
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.AcaDifficultyParams = exports.Q_ACA_RISK = exports.Q_ACA_TIME = exports.Q_ACA_WATER = exports.Q_ACA_TECHNICAL = exports.Q_DIFFICULTY_TYPE = void 0;
|
|
4
|
-
const
|
|
5
|
-
const
|
|
4
|
+
const difficultyRating_1 = require("../../difficulty/difficultyRating");
|
|
5
|
+
const acaSubRatings_1 = require("../../difficulty/acaSubRatings");
|
|
6
6
|
const difficultyParams_1 = require("./difficultyParams");
|
|
7
7
|
exports.Q_DIFFICULTY_TYPE = 'difficulty-type';
|
|
8
8
|
exports.Q_ACA_TECHNICAL = 'aca-technical-rating';
|
|
@@ -45,7 +45,7 @@ function acaAxisKeysPresent(q) {
|
|
|
45
45
|
class AcaDifficultyParams extends difficultyParams_1.DifficultyParams {
|
|
46
46
|
constructor(technical, water, time, effectiveRisk) {
|
|
47
47
|
super();
|
|
48
|
-
this.difficultyType =
|
|
48
|
+
this.difficultyType = difficultyRating_1.DifficultyRatingSystem.ACA;
|
|
49
49
|
this.technical = [...technical];
|
|
50
50
|
this.water = [...water];
|
|
51
51
|
this.time = [...time];
|
|
@@ -75,10 +75,10 @@ class AcaDifficultyParams extends difficultyParams_1.DifficultyParams {
|
|
|
75
75
|
return p.toString();
|
|
76
76
|
}
|
|
77
77
|
static fromQueryStringParams(q) {
|
|
78
|
-
const technical = parseEnumTokens(q[exports.Q_ACA_TECHNICAL] ?? q['Aca-Technical-Rating'], Object.values(
|
|
79
|
-
const water = parseEnumTokens(q[exports.Q_ACA_WATER] ?? q['Aca-Water-Rating'], Object.values(
|
|
80
|
-
const time = parseEnumTokens(q[exports.Q_ACA_TIME] ?? q['Aca-Time-Rating'], Object.values(
|
|
81
|
-
const effectiveRisk = parseEnumTokens(q[exports.Q_ACA_RISK] ?? q['Aca-Risk-Rating'], Object.values(
|
|
78
|
+
const technical = parseEnumTokens(q[exports.Q_ACA_TECHNICAL] ?? q['Aca-Technical-Rating'], Object.values(acaSubRatings_1.AcaTechnicalSubRating), 'aca-technical-rating');
|
|
79
|
+
const water = parseEnumTokens(q[exports.Q_ACA_WATER] ?? q['Aca-Water-Rating'], Object.values(acaSubRatings_1.AcaWaterSubRating), 'aca-water-rating');
|
|
80
|
+
const time = parseEnumTokens(q[exports.Q_ACA_TIME] ?? q['Aca-Time-Rating'], Object.values(acaSubRatings_1.AcaTimeSubRating), 'aca-time-rating');
|
|
81
|
+
const effectiveRisk = parseEnumTokens(q[exports.Q_ACA_RISK] ?? q['Aca-Risk-Rating'], Object.values(acaSubRatings_1.AcaRiskSubRating), 'aca-risk-rating');
|
|
82
82
|
return new AcaDifficultyParams(technical, water, time, effectiveRisk);
|
|
83
83
|
}
|
|
84
84
|
static optionalString(obj, ...keys) {
|
|
@@ -91,10 +91,10 @@ class AcaDifficultyParams extends difficultyParams_1.DifficultyParams {
|
|
|
91
91
|
}
|
|
92
92
|
/** Parses JSON objects with the same key variants as {@link fromQueryStringParams}. */
|
|
93
93
|
static fromResult(obj) {
|
|
94
|
-
const technical = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_TECHNICAL, 'Aca-Technical-Rating'), Object.values(
|
|
95
|
-
const water = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_WATER, 'Aca-Water-Rating'), Object.values(
|
|
96
|
-
const time = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_TIME, 'Aca-Time-Rating'), Object.values(
|
|
97
|
-
const effectiveRisk = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_RISK, 'Aca-Risk-Rating'), Object.values(
|
|
94
|
+
const technical = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_TECHNICAL, 'Aca-Technical-Rating'), Object.values(acaSubRatings_1.AcaTechnicalSubRating), 'aca-technical-rating');
|
|
95
|
+
const water = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_WATER, 'Aca-Water-Rating'), Object.values(acaSubRatings_1.AcaWaterSubRating), 'aca-water-rating');
|
|
96
|
+
const time = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_TIME, 'Aca-Time-Rating'), Object.values(acaSubRatings_1.AcaTimeSubRating), 'aca-time-rating');
|
|
97
|
+
const effectiveRisk = parseEnumTokens(AcaDifficultyParams.optionalString(obj, exports.Q_ACA_RISK, 'Aca-Risk-Rating'), Object.values(acaSubRatings_1.AcaRiskSubRating), 'aca-risk-rating');
|
|
98
98
|
return new AcaDifficultyParams(technical, water, time, effectiveRisk);
|
|
99
99
|
}
|
|
100
100
|
/** Returns null if every axis is empty (no difficulty filter). */
|
|
@@ -105,5 +105,5 @@ class AcaDifficultyParams extends difficultyParams_1.DifficultyParams {
|
|
|
105
105
|
}
|
|
106
106
|
}
|
|
107
107
|
exports.AcaDifficultyParams = AcaDifficultyParams;
|
|
108
|
-
(0, difficultyParams_1.registerDifficultyParamsQueryInference)((q) => acaAxisKeysPresent(q) ?
|
|
109
|
-
(0, difficultyParams_1.registerDifficultyParamsQueryParser)(
|
|
108
|
+
(0, difficultyParams_1.registerDifficultyParamsQueryInference)((q) => acaAxisKeysPresent(q) ? difficultyRating_1.DifficultyRatingSystem.ACA : null);
|
|
109
|
+
(0, difficultyParams_1.registerDifficultyParamsQueryParser)(difficultyRating_1.DifficultyRatingSystem.ACA, (q) => AcaDifficultyParams.fromQueryStringParams(q));
|
|
@@ -1,16 +1,16 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { DifficultyRatingSystem } from '../../difficulty/difficultyRating';
|
|
2
2
|
/** Flat query / query-like record for {@link DifficultyParams.fromQueryStringParams}. */
|
|
3
3
|
export type DifficultyParamsQueryRecord = Record<string, string | undefined>;
|
|
4
4
|
/**
|
|
5
|
-
* When `difficulty-type` is absent, this hook may return a {@link
|
|
5
|
+
* When `difficulty-type` is absent, this hook may return a {@link DifficultyRatingSystem} to parse with
|
|
6
6
|
* {@link registerDifficultyParamsQueryParser} (e.g. ACA when any `aca-*-rating` key is present).
|
|
7
7
|
*/
|
|
8
|
-
export declare function registerDifficultyParamsQueryInference(fn: (q: DifficultyParamsQueryRecord) =>
|
|
8
|
+
export declare function registerDifficultyParamsQueryInference(fn: (q: DifficultyParamsQueryRecord) => DifficultyRatingSystem | null): void;
|
|
9
9
|
/**
|
|
10
10
|
* Registers the parser for {@link DifficultyParams.fromQueryStringParams} for a given type
|
|
11
11
|
* (see `registerDifficultyParamsParsers.ts`).
|
|
12
12
|
*/
|
|
13
|
-
export declare function registerDifficultyParamsQueryParser(type:
|
|
13
|
+
export declare function registerDifficultyParamsQueryParser(type: DifficultyRatingSystem, parse: (q: DifficultyParamsQueryRecord) => DifficultyParams): void;
|
|
14
14
|
/**
|
|
15
15
|
* Registers {@link DifficultyParams.fromResult} (see `registerDifficultyParamsParsers.ts`).
|
|
16
16
|
*/
|
|
@@ -19,7 +19,7 @@ export declare function registerDifficultyParamsResultParser(parse: (result: unk
|
|
|
19
19
|
* Query serialization for GET /routes and GET /search difficulty filters.
|
|
20
20
|
*/
|
|
21
21
|
export declare abstract class DifficultyParams {
|
|
22
|
-
abstract readonly difficultyType:
|
|
22
|
+
abstract readonly difficultyType: DifficultyRatingSystem;
|
|
23
23
|
abstract toQueryString(): string;
|
|
24
24
|
abstract isActive(): boolean;
|
|
25
25
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"difficultyParams.d.ts","sourceRoot":"","sources":["../../../../src/models/api/params/difficultyParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"difficultyParams.d.ts","sourceRoot":"","sources":["../../../../src/models/api/params/difficultyParams.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,sBAAsB,EAAE,MAAM,mCAAmC,CAAC;AAE3E,yFAAyF;AACzF,MAAM,MAAM,2BAA2B,GAAG,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC,CAAC;AAe7E;;;GAGG;AACH,wBAAgB,sCAAsC,CAClD,EAAE,EAAE,CAAC,CAAC,EAAE,2BAA2B,KAAK,sBAAsB,GAAG,IAAI,GACtE,IAAI,CAEN;AAED;;;GAGG;AACH,wBAAgB,mCAAmC,CAC/C,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,CAAC,CAAC,EAAE,2BAA2B,KAAK,gBAAgB,GAC5D,IAAI,CAEN;AAED;;GAEG;AACH,wBAAgB,oCAAoC,CAChD,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,gBAAgB,GAAG,IAAI,GACpD,IAAI,CAEN;AAED;;GAEG;AACH,8BAAsB,gBAAgB;IAClC,QAAQ,CAAC,QAAQ,CAAC,cAAc,EAAE,sBAAsB,CAAC;IAEzD,QAAQ,CAAC,aAAa,IAAI,MAAM;IAEhC,QAAQ,CAAC,QAAQ,IAAI,OAAO;IAE5B;;;OAGG;IACH,MAAM,CAAC,qBAAqB,CACxB,CAAC,EAAE,2BAA2B,GAC/B,gBAAgB,GAAG,IAAI;IAmC1B;;;OAGG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,GAAG,IAAI;IAS3D,8FAA8F;IAC9F,MAAM,CAAC,uBAAuB,CAC1B,MAAM,EAAE,eAAe,EACvB,UAAU,EAAE,gBAAgB,GAAG,IAAI,GACpC,IAAI;CAOV;AAED,wBAAgB,wBAAwB,CACpC,CAAC,EAAE,gBAAgB,GAAG,IAAI,GAAG,SAAS,GACvC,OAAO,CAET"}
|
|
@@ -5,12 +5,12 @@ exports.registerDifficultyParamsQueryInference = registerDifficultyParamsQueryIn
|
|
|
5
5
|
exports.registerDifficultyParamsQueryParser = registerDifficultyParamsQueryParser;
|
|
6
6
|
exports.registerDifficultyParamsResultParser = registerDifficultyParamsResultParser;
|
|
7
7
|
exports.isDifficultyParamsActive = isDifficultyParamsActive;
|
|
8
|
-
const
|
|
8
|
+
const difficultyRating_1 = require("../../difficulty/difficultyRating");
|
|
9
9
|
const queryParsers = new Map();
|
|
10
10
|
let queryInference;
|
|
11
11
|
let parseFromResult;
|
|
12
12
|
/**
|
|
13
|
-
* When `difficulty-type` is absent, this hook may return a {@link
|
|
13
|
+
* When `difficulty-type` is absent, this hook may return a {@link DifficultyRatingSystem} to parse with
|
|
14
14
|
* {@link registerDifficultyParamsQueryParser} (e.g. ACA when any `aca-*-rating` key is present).
|
|
15
15
|
*/
|
|
16
16
|
function registerDifficultyParamsQueryInference(fn) {
|
|
@@ -55,7 +55,7 @@ class DifficultyParams {
|
|
|
55
55
|
return parser(q);
|
|
56
56
|
}
|
|
57
57
|
if (rawType === 'aca') {
|
|
58
|
-
const parser = queryParsers.get(
|
|
58
|
+
const parser = queryParsers.get(difficultyRating_1.DifficultyRatingSystem.ACA);
|
|
59
59
|
if (parser === undefined) {
|
|
60
60
|
throw new Error('No difficulty params query parser registered for difficultyType ACA');
|
|
61
61
|
}
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
import { DifficultyRating, DifficultyRatingSystem } from './difficultyRating';
|
|
2
|
+
import { AcaRiskSubRating, AcaTechnicalSubRating, AcaTimeSubRating, AcaWaterSubRating } from './acaSubRatings';
|
|
3
|
+
/**
|
|
4
|
+
* ACA canyon difficulty rating from DB strings. `additionalRisk` is the raw stored value
|
|
5
|
+
* (`riskRating` column); `effectiveRisk` applies the technical default floor when `additionalRisk`
|
|
6
|
+
* is null or milder than that default.
|
|
7
|
+
*/
|
|
8
|
+
export declare class AcaDifficultyRating extends DifficultyRating {
|
|
9
|
+
readonly difficultyRatingSystem = DifficultyRatingSystem.ACA;
|
|
10
|
+
readonly technical: AcaTechnicalSubRating | null;
|
|
11
|
+
readonly water: AcaWaterSubRating | null;
|
|
12
|
+
readonly time: AcaTimeSubRating | null;
|
|
13
|
+
/** Raw additional risk from ropewiki (`riskRating` column), after enum parse; null if unset. */
|
|
14
|
+
readonly additionalRisk: AcaRiskSubRating | null;
|
|
15
|
+
/** Risk used for display and sorting (never milder than the default implied by technical). */
|
|
16
|
+
readonly effectiveRisk: AcaRiskSubRating | null;
|
|
17
|
+
constructor(technicalRating: string | null | undefined, waterRating: string | null | undefined, timeRating: string | null | undefined, additionalRiskRating: string | null | undefined);
|
|
18
|
+
getEffectiveRiskForDisplay(): AcaRiskSubRating | null;
|
|
19
|
+
private static assignParts;
|
|
20
|
+
private static defaultRiskFromTechnical;
|
|
21
|
+
private static computeEffectiveRisk;
|
|
22
|
+
private static parseField;
|
|
23
|
+
/**
|
|
24
|
+
* Parses JSON/API objects: `difficultyRatingSystem: 'ACA'` (optional when dispatched via
|
|
25
|
+
* {@link DifficultyRating.fromResult}), `technical`, `water`, `time`, `additionalRisk` (raw),
|
|
26
|
+
* optional `effectiveRisk` override. Legacy `difficultyType` is accepted.
|
|
27
|
+
*/
|
|
28
|
+
static fromResult(result: unknown): AcaDifficultyRating;
|
|
29
|
+
private static coerceOptionalString;
|
|
30
|
+
}
|
|
31
|
+
//# sourceMappingURL=acaDifficultyRating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acaDifficultyRating.d.ts","sourceRoot":"","sources":["../../../src/models/difficulty/acaDifficultyRating.ts"],"names":[],"mappings":"AAAA,OAAO,EACH,gBAAgB,EAChB,sBAAsB,EAEzB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAEH,gBAAgB,EAChB,qBAAqB,EACrB,gBAAgB,EAChB,iBAAiB,EACpB,MAAM,iBAAiB,CAAC;AAUzB;;;;GAIG;AACH,qBAAa,mBAAoB,SAAQ,gBAAgB;IACrD,QAAQ,CAAC,sBAAsB,8BAA8B;IAE7D,QAAQ,CAAC,SAAS,EAAG,qBAAqB,GAAG,IAAI,CAAC;IAClD,QAAQ,CAAC,KAAK,EAAG,iBAAiB,GAAG,IAAI,CAAC;IAC1C,QAAQ,CAAC,IAAI,EAAG,gBAAgB,GAAG,IAAI,CAAC;IACxC,gGAAgG;IAChG,QAAQ,CAAC,cAAc,EAAG,gBAAgB,GAAG,IAAI,CAAC;IAClD,8FAA8F;IAC9F,QAAQ,CAAC,aAAa,EAAG,gBAAgB,GAAG,IAAI,CAAC;gBAG7C,eAAe,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EAC1C,WAAW,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACtC,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACrC,oBAAoB,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS;IAoCnD,0BAA0B,IAAI,gBAAgB,GAAG,IAAI;IAIrD,OAAO,CAAC,MAAM,CAAC,WAAW;IAa1B,OAAO,CAAC,MAAM,CAAC,wBAAwB;IAcvC,OAAO,CAAC,MAAM,CAAC,oBAAoB;IAcnC,OAAO,CAAC,MAAM,CAAC,UAAU;IAezB;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,mBAAmB;IA6CvD,OAAO,CAAC,MAAM,CAAC,oBAAoB;CAOtC"}
|
|
@@ -0,0 +1,113 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.AcaDifficultyRating = void 0;
|
|
4
|
+
const difficultyRating_1 = require("./difficultyRating");
|
|
5
|
+
const acaSubRatings_1 = require("./acaSubRatings");
|
|
6
|
+
/**
|
|
7
|
+
* ACA canyon difficulty rating from DB strings. `additionalRisk` is the raw stored value
|
|
8
|
+
* (`riskRating` column); `effectiveRisk` applies the technical default floor when `additionalRisk`
|
|
9
|
+
* is null or milder than that default.
|
|
10
|
+
*/
|
|
11
|
+
class AcaDifficultyRating extends difficultyRating_1.DifficultyRating {
|
|
12
|
+
constructor(technicalRating, waterRating, timeRating, additionalRiskRating) {
|
|
13
|
+
super();
|
|
14
|
+
this.difficultyRatingSystem = difficultyRating_1.DifficultyRatingSystem.ACA;
|
|
15
|
+
const technical = AcaDifficultyRating.parseField(technicalRating, Object.values(acaSubRatings_1.AcaTechnicalSubRating), 'technical');
|
|
16
|
+
const water = AcaDifficultyRating.parseField(waterRating, Object.values(acaSubRatings_1.AcaWaterSubRating), 'water');
|
|
17
|
+
const time = AcaDifficultyRating.parseField(timeRating, Object.values(acaSubRatings_1.AcaTimeSubRating), 'time');
|
|
18
|
+
const parsedAdditionalRisk = AcaDifficultyRating.parseField(additionalRiskRating, Object.values(acaSubRatings_1.AcaRiskSubRating), 'additionalRisk');
|
|
19
|
+
const parts = {
|
|
20
|
+
technical,
|
|
21
|
+
water,
|
|
22
|
+
time,
|
|
23
|
+
additionalRisk: parsedAdditionalRisk,
|
|
24
|
+
effectiveRisk: AcaDifficultyRating.computeEffectiveRisk(parsedAdditionalRisk, technical),
|
|
25
|
+
};
|
|
26
|
+
AcaDifficultyRating.assignParts(this, parts);
|
|
27
|
+
}
|
|
28
|
+
getEffectiveRiskForDisplay() {
|
|
29
|
+
return this.effectiveRisk;
|
|
30
|
+
}
|
|
31
|
+
static assignParts(target, parts) {
|
|
32
|
+
target.technical = parts.technical;
|
|
33
|
+
target.water = parts.water;
|
|
34
|
+
target.time = parts.time;
|
|
35
|
+
target.additionalRisk =
|
|
36
|
+
parts.additionalRisk;
|
|
37
|
+
target.effectiveRisk =
|
|
38
|
+
parts.effectiveRisk;
|
|
39
|
+
}
|
|
40
|
+
static defaultRiskFromTechnical(technical) {
|
|
41
|
+
if (technical === acaSubRatings_1.AcaTechnicalSubRating.One)
|
|
42
|
+
return acaSubRatings_1.AcaRiskSubRating.G;
|
|
43
|
+
if (technical === acaSubRatings_1.AcaTechnicalSubRating.Two)
|
|
44
|
+
return acaSubRatings_1.AcaRiskSubRating.PG;
|
|
45
|
+
if (technical === acaSubRatings_1.AcaTechnicalSubRating.Three ||
|
|
46
|
+
technical === acaSubRatings_1.AcaTechnicalSubRating.Four) {
|
|
47
|
+
return acaSubRatings_1.AcaRiskSubRating.PG13;
|
|
48
|
+
}
|
|
49
|
+
return null;
|
|
50
|
+
}
|
|
51
|
+
static computeEffectiveRisk(additionalRisk, technical) {
|
|
52
|
+
const defaultRisk = AcaDifficultyRating.defaultRiskFromTechnical(technical);
|
|
53
|
+
if (additionalRisk != null) {
|
|
54
|
+
return defaultRisk != null &&
|
|
55
|
+
acaSubRatings_1.ACA_RISK_ORDER[additionalRisk] < acaSubRatings_1.ACA_RISK_ORDER[defaultRisk]
|
|
56
|
+
? defaultRisk
|
|
57
|
+
: additionalRisk;
|
|
58
|
+
}
|
|
59
|
+
return defaultRisk;
|
|
60
|
+
}
|
|
61
|
+
static parseField(value, allowed, fieldName) {
|
|
62
|
+
if (value == null || value === '')
|
|
63
|
+
return null;
|
|
64
|
+
const trimmed = value.trim();
|
|
65
|
+
if (!allowed.includes(trimmed)) {
|
|
66
|
+
throw new Error(`Invalid difficulty ${fieldName}: "${value}" is not one of [${allowed.join(', ')}]`);
|
|
67
|
+
}
|
|
68
|
+
return trimmed;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Parses JSON/API objects: `difficultyRatingSystem: 'ACA'` (optional when dispatched via
|
|
72
|
+
* {@link DifficultyRating.fromResult}), `technical`, `water`, `time`, `additionalRisk` (raw),
|
|
73
|
+
* optional `effectiveRisk` override. Legacy `difficultyType` is accepted.
|
|
74
|
+
*/
|
|
75
|
+
static fromResult(result) {
|
|
76
|
+
if (result == null || typeof result !== 'object') {
|
|
77
|
+
throw new Error('AcaDifficultyRating result must be an object');
|
|
78
|
+
}
|
|
79
|
+
const r = result;
|
|
80
|
+
const dtype = r.difficultyRatingSystem ??
|
|
81
|
+
r.DifficultyRatingSystem ??
|
|
82
|
+
r.difficultyType ??
|
|
83
|
+
r.DifficultyType;
|
|
84
|
+
if (dtype !== undefined &&
|
|
85
|
+
dtype !== null &&
|
|
86
|
+
typeof dtype === 'string' &&
|
|
87
|
+
dtype.toUpperCase() !== difficultyRating_1.DifficultyRatingSystem.ACA) {
|
|
88
|
+
throw new Error(`Unsupported difficultyRatingSystem for AcaDifficultyRating.fromResult: ${JSON.stringify(dtype)}`);
|
|
89
|
+
}
|
|
90
|
+
const tech = AcaDifficultyRating.coerceOptionalString(r.technical ?? r.Technical);
|
|
91
|
+
const water = AcaDifficultyRating.coerceOptionalString(r.water ?? r.Water);
|
|
92
|
+
const time = AcaDifficultyRating.coerceOptionalString(r.time ?? r.Time);
|
|
93
|
+
const additionalRiskRaw = AcaDifficultyRating.coerceOptionalString(r.additionalRisk ?? r.AdditionalRisk);
|
|
94
|
+
const effectiveRaw = AcaDifficultyRating.coerceOptionalString(r.effectiveRisk ?? r.EffectiveRisk);
|
|
95
|
+
if (effectiveRaw !== null) {
|
|
96
|
+
const inst = new AcaDifficultyRating(tech, water, time, additionalRiskRaw);
|
|
97
|
+
const effParsed = AcaDifficultyRating.parseField(effectiveRaw, Object.values(acaSubRatings_1.AcaRiskSubRating), 'effectiveRisk');
|
|
98
|
+
inst.effectiveRisk = effParsed;
|
|
99
|
+
return inst;
|
|
100
|
+
}
|
|
101
|
+
return new AcaDifficultyRating(tech, water, time, additionalRiskRaw);
|
|
102
|
+
}
|
|
103
|
+
static coerceOptionalString(v) {
|
|
104
|
+
if (v === undefined || v === null || v === '')
|
|
105
|
+
return null;
|
|
106
|
+
if (typeof v !== 'string') {
|
|
107
|
+
throw new Error('AcaDifficultyRating field must be string or null');
|
|
108
|
+
}
|
|
109
|
+
return v;
|
|
110
|
+
}
|
|
111
|
+
}
|
|
112
|
+
exports.AcaDifficultyRating = AcaDifficultyRating;
|
|
113
|
+
(0, difficultyRating_1.registerDifficultyParser)(difficultyRating_1.DifficultyRatingSystem.ACA, (v) => AcaDifficultyRating.fromResult(v));
|
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
/** ACA technical rating: 1–4 */
|
|
2
|
-
export declare enum
|
|
2
|
+
export declare enum AcaTechnicalSubRating {
|
|
3
3
|
One = "1",
|
|
4
4
|
Two = "2",
|
|
5
5
|
Three = "3",
|
|
6
6
|
Four = "4"
|
|
7
7
|
}
|
|
8
8
|
/** ACA water rating: A, B, C, or C1–C4 */
|
|
9
|
-
export declare enum
|
|
9
|
+
export declare enum AcaWaterSubRating {
|
|
10
10
|
A = "A",
|
|
11
11
|
B = "B",
|
|
12
12
|
C = "C",
|
|
@@ -16,7 +16,7 @@ export declare enum AcaWaterRating {
|
|
|
16
16
|
C4 = "C4"
|
|
17
17
|
}
|
|
18
18
|
/** ACA time rating: I–VI */
|
|
19
|
-
export declare enum
|
|
19
|
+
export declare enum AcaTimeSubRating {
|
|
20
20
|
I = "I",
|
|
21
21
|
II = "II",
|
|
22
22
|
III = "III",
|
|
@@ -25,7 +25,7 @@ export declare enum AcaTimeRating {
|
|
|
25
25
|
VI = "VI"
|
|
26
26
|
}
|
|
27
27
|
/** ACA risk rating */
|
|
28
|
-
export declare enum
|
|
28
|
+
export declare enum AcaRiskSubRating {
|
|
29
29
|
G = "G",
|
|
30
30
|
PG = "PG",
|
|
31
31
|
PG13 = "PG13",
|
|
@@ -34,12 +34,12 @@ export declare enum AcaRiskRating {
|
|
|
34
34
|
XX = "XX"
|
|
35
35
|
}
|
|
36
36
|
/** Total order for technical (lower index = easier). */
|
|
37
|
-
export declare const ACA_TECHNICAL_ORDER: Record<
|
|
37
|
+
export declare const ACA_TECHNICAL_ORDER: Record<AcaTechnicalSubRating, number>;
|
|
38
38
|
/** Total order for water: A < B < C < C1 < C2 < C3 < C4 */
|
|
39
|
-
export declare const ACA_WATER_ORDER: Record<
|
|
40
|
-
export declare const ACA_TIME_ORDER: Record<
|
|
39
|
+
export declare const ACA_WATER_ORDER: Record<AcaWaterSubRating, number>;
|
|
40
|
+
export declare const ACA_TIME_ORDER: Record<AcaTimeSubRating, number>;
|
|
41
41
|
/** Lower index = milder risk */
|
|
42
|
-
export declare const ACA_RISK_ORDER: Record<
|
|
42
|
+
export declare const ACA_RISK_ORDER: Record<AcaRiskSubRating, number>;
|
|
43
43
|
/** @deprecated Use ACA_RISK_ORDER */
|
|
44
|
-
export declare const RISK_ORDER: Record<
|
|
45
|
-
//# sourceMappingURL=
|
|
44
|
+
export declare const RISK_ORDER: Record<AcaRiskSubRating, number>;
|
|
45
|
+
//# sourceMappingURL=acaSubRatings.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"acaSubRatings.d.ts","sourceRoot":"","sources":["../../../src/models/difficulty/acaSubRatings.ts"],"names":[],"mappings":"AAAA,gCAAgC;AAChC,oBAAY,qBAAqB;IAC7B,GAAG,MAAM;IACT,GAAG,MAAM;IACT,KAAK,MAAM;IACX,IAAI,MAAM;CACb;AAED,0CAA0C;AAC1C,oBAAY,iBAAiB;IACzB,CAAC,MAAM;IACP,CAAC,MAAM;IACP,CAAC,MAAM;IACP,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;IACT,EAAE,OAAO;CACZ;AAED,4BAA4B;AAC5B,oBAAY,gBAAgB;IACxB,CAAC,MAAM;IACP,EAAE,OAAO;IACT,GAAG,QAAQ;IACX,EAAE,OAAO;IACT,CAAC,MAAM;IACP,EAAE,OAAO;CACZ;AAED,sBAAsB;AACtB,oBAAY,gBAAgB;IACxB,CAAC,MAAM;IACP,EAAE,OAAO;IACT,IAAI,SAAS;IACb,CAAC,MAAM;IACP,CAAC,MAAM;IACP,EAAE,OAAO;CACZ;AAED,wDAAwD;AACxD,eAAO,MAAM,mBAAmB,EAAE,MAAM,CAAC,qBAAqB,EAAE,MAAM,CAKrE,CAAC;AAEF,2DAA2D;AAC3D,eAAO,MAAM,eAAe,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAQ7D,CAAC;AAEF,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAO3D,CAAC;AAEF,gCAAgC;AAChC,eAAO,MAAM,cAAc,EAAE,MAAM,CAAC,gBAAgB,EAAE,MAAM,CAO3D,CAAC;AAEF,qCAAqC;AACrC,eAAO,MAAM,UAAU,kCAAiB,CAAC"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.RISK_ORDER = exports.ACA_RISK_ORDER = exports.ACA_TIME_ORDER = exports.ACA_WATER_ORDER = exports.ACA_TECHNICAL_ORDER = exports.AcaRiskSubRating = exports.AcaTimeSubRating = exports.AcaWaterSubRating = exports.AcaTechnicalSubRating = void 0;
|
|
4
|
+
/** ACA technical rating: 1–4 */
|
|
5
|
+
var AcaTechnicalSubRating;
|
|
6
|
+
(function (AcaTechnicalSubRating) {
|
|
7
|
+
AcaTechnicalSubRating["One"] = "1";
|
|
8
|
+
AcaTechnicalSubRating["Two"] = "2";
|
|
9
|
+
AcaTechnicalSubRating["Three"] = "3";
|
|
10
|
+
AcaTechnicalSubRating["Four"] = "4";
|
|
11
|
+
})(AcaTechnicalSubRating || (exports.AcaTechnicalSubRating = AcaTechnicalSubRating = {}));
|
|
12
|
+
/** ACA water rating: A, B, C, or C1–C4 */
|
|
13
|
+
var AcaWaterSubRating;
|
|
14
|
+
(function (AcaWaterSubRating) {
|
|
15
|
+
AcaWaterSubRating["A"] = "A";
|
|
16
|
+
AcaWaterSubRating["B"] = "B";
|
|
17
|
+
AcaWaterSubRating["C"] = "C";
|
|
18
|
+
AcaWaterSubRating["C1"] = "C1";
|
|
19
|
+
AcaWaterSubRating["C2"] = "C2";
|
|
20
|
+
AcaWaterSubRating["C3"] = "C3";
|
|
21
|
+
AcaWaterSubRating["C4"] = "C4";
|
|
22
|
+
})(AcaWaterSubRating || (exports.AcaWaterSubRating = AcaWaterSubRating = {}));
|
|
23
|
+
/** ACA time rating: I–VI */
|
|
24
|
+
var AcaTimeSubRating;
|
|
25
|
+
(function (AcaTimeSubRating) {
|
|
26
|
+
AcaTimeSubRating["I"] = "I";
|
|
27
|
+
AcaTimeSubRating["II"] = "II";
|
|
28
|
+
AcaTimeSubRating["III"] = "III";
|
|
29
|
+
AcaTimeSubRating["IV"] = "IV";
|
|
30
|
+
AcaTimeSubRating["V"] = "V";
|
|
31
|
+
AcaTimeSubRating["VI"] = "VI";
|
|
32
|
+
})(AcaTimeSubRating || (exports.AcaTimeSubRating = AcaTimeSubRating = {}));
|
|
33
|
+
/** ACA risk rating */
|
|
34
|
+
var AcaRiskSubRating;
|
|
35
|
+
(function (AcaRiskSubRating) {
|
|
36
|
+
AcaRiskSubRating["G"] = "G";
|
|
37
|
+
AcaRiskSubRating["PG"] = "PG";
|
|
38
|
+
AcaRiskSubRating["PG13"] = "PG13";
|
|
39
|
+
AcaRiskSubRating["R"] = "R";
|
|
40
|
+
AcaRiskSubRating["X"] = "X";
|
|
41
|
+
AcaRiskSubRating["XX"] = "XX";
|
|
42
|
+
})(AcaRiskSubRating || (exports.AcaRiskSubRating = AcaRiskSubRating = {}));
|
|
43
|
+
/** Total order for technical (lower index = easier). */
|
|
44
|
+
exports.ACA_TECHNICAL_ORDER = {
|
|
45
|
+
[AcaTechnicalSubRating.One]: 0,
|
|
46
|
+
[AcaTechnicalSubRating.Two]: 1,
|
|
47
|
+
[AcaTechnicalSubRating.Three]: 2,
|
|
48
|
+
[AcaTechnicalSubRating.Four]: 3,
|
|
49
|
+
};
|
|
50
|
+
/** Total order for water: A < B < C < C1 < C2 < C3 < C4 */
|
|
51
|
+
exports.ACA_WATER_ORDER = {
|
|
52
|
+
[AcaWaterSubRating.A]: 0,
|
|
53
|
+
[AcaWaterSubRating.B]: 1,
|
|
54
|
+
[AcaWaterSubRating.C]: 2,
|
|
55
|
+
[AcaWaterSubRating.C1]: 3,
|
|
56
|
+
[AcaWaterSubRating.C2]: 4,
|
|
57
|
+
[AcaWaterSubRating.C3]: 5,
|
|
58
|
+
[AcaWaterSubRating.C4]: 6,
|
|
59
|
+
};
|
|
60
|
+
exports.ACA_TIME_ORDER = {
|
|
61
|
+
[AcaTimeSubRating.I]: 0,
|
|
62
|
+
[AcaTimeSubRating.II]: 1,
|
|
63
|
+
[AcaTimeSubRating.III]: 2,
|
|
64
|
+
[AcaTimeSubRating.IV]: 3,
|
|
65
|
+
[AcaTimeSubRating.V]: 4,
|
|
66
|
+
[AcaTimeSubRating.VI]: 5,
|
|
67
|
+
};
|
|
68
|
+
/** Lower index = milder risk */
|
|
69
|
+
exports.ACA_RISK_ORDER = {
|
|
70
|
+
[AcaRiskSubRating.G]: 0,
|
|
71
|
+
[AcaRiskSubRating.PG]: 1,
|
|
72
|
+
[AcaRiskSubRating.PG13]: 2,
|
|
73
|
+
[AcaRiskSubRating.R]: 3,
|
|
74
|
+
[AcaRiskSubRating.X]: 4,
|
|
75
|
+
[AcaRiskSubRating.XX]: 5,
|
|
76
|
+
};
|
|
77
|
+
/** @deprecated Use ACA_RISK_ORDER */
|
|
78
|
+
exports.RISK_ORDER = exports.ACA_RISK_ORDER;
|
|
@@ -0,0 +1,29 @@
|
|
|
1
|
+
import type { AcaRiskSubRating } from './acaSubRatings';
|
|
2
|
+
/** Discriminator for page/route difficulty rating scales (extensible). */
|
|
3
|
+
export declare enum DifficultyRatingSystem {
|
|
4
|
+
ACA = "ACA"
|
|
5
|
+
}
|
|
6
|
+
/**
|
|
7
|
+
* Registers the parser for {@link DifficultyRating.fromResult} for a given
|
|
8
|
+
* {@link DifficultyRatingSystem}. Call once per scale from the corresponding module at load time
|
|
9
|
+
* (see `registerDifficultyRatingParsers.ts`).
|
|
10
|
+
*/
|
|
11
|
+
export declare function registerDifficultyParser(type: DifficultyRatingSystem, parse: (result: unknown) => DifficultyRating): void;
|
|
12
|
+
/**
|
|
13
|
+
* Base difficulty rating type for page previews and full page views.
|
|
14
|
+
* Concrete scales extend this (e.g. {@link AcaDifficultyRating}).
|
|
15
|
+
*/
|
|
16
|
+
export declare abstract class DifficultyRating {
|
|
17
|
+
abstract readonly difficultyRatingSystem: DifficultyRatingSystem;
|
|
18
|
+
/** Risk level for display (e.g. effective ACA risk). Non-ACA scales may return null. */
|
|
19
|
+
abstract getEffectiveRiskForDisplay(): AcaRiskSubRating | null;
|
|
20
|
+
/**
|
|
21
|
+
* Parses a difficulty rating object from API/JSON. Dispatches on `difficultyRatingSystem`
|
|
22
|
+
* (or legacy `difficultyType`, case-insensitive); a missing discriminator defaults to
|
|
23
|
+
* {@link DifficultyRatingSystem.ACA}.
|
|
24
|
+
*/
|
|
25
|
+
static fromResult(result: unknown): DifficultyRating;
|
|
26
|
+
}
|
|
27
|
+
/** Reads nested difficulty rating JSON from legacy or current property names. */
|
|
28
|
+
export declare function resolveDifficultyRatingFromRecord(r: Record<string, unknown>): unknown;
|
|
29
|
+
//# sourceMappingURL=difficultyRating.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"difficultyRating.d.ts","sourceRoot":"","sources":["../../../src/models/difficulty/difficultyRating.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AAExD,0EAA0E;AAC1E,oBAAY,sBAAsB;IAC9B,GAAG,QAAQ;CACd;AAOD;;;;GAIG;AACH,wBAAgB,wBAAwB,CACpC,IAAI,EAAE,sBAAsB,EAC5B,KAAK,EAAE,CAAC,MAAM,EAAE,OAAO,KAAK,gBAAgB,GAC7C,IAAI,CAEN;AAED;;;GAGG;AACH,8BAAsB,gBAAgB;IAClC,QAAQ,CAAC,QAAQ,CAAC,sBAAsB,EAAE,sBAAsB,CAAC;IAEjE,wFAAwF;IACxF,QAAQ,CAAC,0BAA0B,IAAI,gBAAgB,GAAG,IAAI;IAE9D;;;;OAIG;IACH,MAAM,CAAC,UAAU,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB;CAqCvD;AAED,iFAAiF;AACjF,wBAAgB,iCAAiC,CAC7C,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC3B,OAAO,CAET"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.DifficultyRating = exports.DifficultyRatingSystem = void 0;
|
|
4
|
+
exports.registerDifficultyParser = registerDifficultyParser;
|
|
5
|
+
exports.resolveDifficultyRatingFromRecord = resolveDifficultyRatingFromRecord;
|
|
6
|
+
/** Discriminator for page/route difficulty rating scales (extensible). */
|
|
7
|
+
var DifficultyRatingSystem;
|
|
8
|
+
(function (DifficultyRatingSystem) {
|
|
9
|
+
DifficultyRatingSystem["ACA"] = "ACA";
|
|
10
|
+
})(DifficultyRatingSystem || (exports.DifficultyRatingSystem = DifficultyRatingSystem = {}));
|
|
11
|
+
const difficultyRatingParsers = new Map();
|
|
12
|
+
/**
|
|
13
|
+
* Registers the parser for {@link DifficultyRating.fromResult} for a given
|
|
14
|
+
* {@link DifficultyRatingSystem}. Call once per scale from the corresponding module at load time
|
|
15
|
+
* (see `registerDifficultyRatingParsers.ts`).
|
|
16
|
+
*/
|
|
17
|
+
function registerDifficultyParser(type, parse) {
|
|
18
|
+
difficultyRatingParsers.set(type, parse);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Base difficulty rating type for page previews and full page views.
|
|
22
|
+
* Concrete scales extend this (e.g. {@link AcaDifficultyRating}).
|
|
23
|
+
*/
|
|
24
|
+
class DifficultyRating {
|
|
25
|
+
/**
|
|
26
|
+
* Parses a difficulty rating object from API/JSON. Dispatches on `difficultyRatingSystem`
|
|
27
|
+
* (or legacy `difficultyType`, case-insensitive); a missing discriminator defaults to
|
|
28
|
+
* {@link DifficultyRatingSystem.ACA}.
|
|
29
|
+
*/
|
|
30
|
+
static fromResult(result) {
|
|
31
|
+
if (result == null || typeof result !== 'object') {
|
|
32
|
+
throw new Error('DifficultyRating result must be an object');
|
|
33
|
+
}
|
|
34
|
+
const r = result;
|
|
35
|
+
const dtypeRaw = r.difficultyRatingSystem ??
|
|
36
|
+
r.DifficultyRatingSystem ??
|
|
37
|
+
r.difficultyType ??
|
|
38
|
+
r.DifficultyType;
|
|
39
|
+
let typeEnum;
|
|
40
|
+
if (dtypeRaw === undefined || dtypeRaw === null) {
|
|
41
|
+
typeEnum = DifficultyRatingSystem.ACA;
|
|
42
|
+
}
|
|
43
|
+
else if (typeof dtypeRaw !== 'string') {
|
|
44
|
+
throw new Error(`DifficultyRating.difficultyRatingSystem must be a string or null, got: ${typeof dtypeRaw}`);
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
const normalized = dtypeRaw.toUpperCase();
|
|
48
|
+
const valid = Object.values(DifficultyRatingSystem);
|
|
49
|
+
if (!valid.includes(normalized)) {
|
|
50
|
+
throw new Error(`Unknown difficultyRatingSystem: ${JSON.stringify(dtypeRaw)}`);
|
|
51
|
+
}
|
|
52
|
+
typeEnum = normalized;
|
|
53
|
+
}
|
|
54
|
+
const parser = difficultyRatingParsers.get(typeEnum);
|
|
55
|
+
if (parser === undefined) {
|
|
56
|
+
throw new Error(`No difficulty rating parser registered for difficultyRatingSystem ${JSON.stringify(typeEnum)}`);
|
|
57
|
+
}
|
|
58
|
+
return parser(result);
|
|
59
|
+
}
|
|
60
|
+
}
|
|
61
|
+
exports.DifficultyRating = DifficultyRating;
|
|
62
|
+
/** Reads nested difficulty rating JSON from legacy or current property names. */
|
|
63
|
+
function resolveDifficultyRatingFromRecord(r) {
|
|
64
|
+
return r.difficultyRating ?? r.difficulty ?? r.Difficulty;
|
|
65
|
+
}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Side-effect import so ACA (and future) difficulty rating parsers register with
|
|
3
|
+
* {@link DifficultyRating.fromResult}. Imported first from the package types barrel so registration
|
|
4
|
+
* is guaranteed even when bundlers tree-shake unused re-exports.
|
|
5
|
+
*/
|
|
6
|
+
import './acaDifficultyRating';
|
|
7
|
+
//# sourceMappingURL=registerDifficultyRatingParsers.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"registerDifficultyRatingParsers.d.ts","sourceRoot":"","sources":["../../../src/models/difficulty/registerDifficultyRatingParsers.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,uBAAuB,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
/**
|
|
4
|
+
* Side-effect import so ACA (and future) difficulty rating parsers register with
|
|
5
|
+
* {@link DifficultyRating.fromResult}. Imported first from the package types barrel so registration
|
|
6
|
+
* is guaranteed even when bundlers tree-shake unused re-exports.
|
|
7
|
+
*/
|
|
8
|
+
require("./acaDifficultyRating");
|