@mostlyrightmd/core 1.5.1 → 1.6.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/index.d.cts +86 -1
- package/dist/index.d.ts +86 -1
- package/dist/validator.cjs +410 -0
- package/dist/validator.cjs.map +1 -1
- package/dist/validator.mjs +410 -0
- package/dist/validator.mjs.map +1 -1
- package/package.json +1 -1
package/dist/index.d.cts
CHANGED
|
@@ -392,6 +392,91 @@ interface ObservationQcV1 {
|
|
|
392
392
|
station_code: string;
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
+
interface ForecastNwpV1 {
|
|
396
|
+
/**
|
|
397
|
+
* units: m
|
|
398
|
+
*/
|
|
399
|
+
cloud_ceiling_m?: null | number;
|
|
400
|
+
/**
|
|
401
|
+
* units: percent
|
|
402
|
+
*/
|
|
403
|
+
cloud_cover_pct?: null | number;
|
|
404
|
+
/**
|
|
405
|
+
* units: K
|
|
406
|
+
*/
|
|
407
|
+
dewpoint_k_2m?: null | number;
|
|
408
|
+
/**
|
|
409
|
+
* units: hours — lead time in hours (alias: fxx)
|
|
410
|
+
*/
|
|
411
|
+
forecast_hour: number;
|
|
412
|
+
/**
|
|
413
|
+
* units: km — great-circle distance from station to nearest grid cell
|
|
414
|
+
*/
|
|
415
|
+
grid_dist_km: number;
|
|
416
|
+
/**
|
|
417
|
+
* grid-projection label (lambert_conformal_conus, regular_latlon_global_0p25, ...)
|
|
418
|
+
*/
|
|
419
|
+
grid_kind: string;
|
|
420
|
+
/**
|
|
421
|
+
* model run / cycle reference time
|
|
422
|
+
*/
|
|
423
|
+
issued_at: string;
|
|
424
|
+
/**
|
|
425
|
+
* NOAA BDP mirror that served the underlying bytes
|
|
426
|
+
*/
|
|
427
|
+
mirror: "aws_bdp" | "azure_bdp" | "ecmwf_aws" | "ecmwf_azure" | "ecmwf_data_portal" | "ecmwf_gcp" | "gcp_bdp" | "msc" | "nomads";
|
|
428
|
+
model: "cfs" | "ecmwf_aifs_ens" | "ecmwf_aifs_single" | "ecmwf_ifs_ens" | "ecmwf_ifs_hres" | "gdas" | "gdps" | "gefs" | "geps" | "gfs" | "hafs" | "hiresw" | "hrdps" | "href" | "hrrr" | "hrrrak" | "nam" | "nbm" | "rap" | "rdps" | "reps" | "rrfs" | "rtma" | "urma";
|
|
429
|
+
/**
|
|
430
|
+
* units: mm
|
|
431
|
+
*/
|
|
432
|
+
precip_mm_1h?: null | number;
|
|
433
|
+
/**
|
|
434
|
+
* units: Pa
|
|
435
|
+
*/
|
|
436
|
+
pressure_pa_mslp?: null | number;
|
|
437
|
+
/**
|
|
438
|
+
* units: Pa
|
|
439
|
+
*/
|
|
440
|
+
pressure_pa_surface?: null | number;
|
|
441
|
+
/**
|
|
442
|
+
* inline physics-bounds verdict; finer-grained QC lands in Phase 3.4
|
|
443
|
+
*/
|
|
444
|
+
qc_status: "clean" | "flagged" | "suspect";
|
|
445
|
+
/**
|
|
446
|
+
* units: percent
|
|
447
|
+
*/
|
|
448
|
+
relative_humidity_pct_2m?: null | number;
|
|
449
|
+
/**
|
|
450
|
+
* wall-clock UTC when the bytes were fetched
|
|
451
|
+
*/
|
|
452
|
+
retrieved_at: string;
|
|
453
|
+
station: string;
|
|
454
|
+
/**
|
|
455
|
+
* units: K
|
|
456
|
+
*/
|
|
457
|
+
temp_k_2m?: null | number;
|
|
458
|
+
/**
|
|
459
|
+
* forecast target time = issued_at + forecast_hour
|
|
460
|
+
*/
|
|
461
|
+
valid_at: string;
|
|
462
|
+
/**
|
|
463
|
+
* units: m
|
|
464
|
+
*/
|
|
465
|
+
visibility_m?: null | number;
|
|
466
|
+
/**
|
|
467
|
+
* units: m/s
|
|
468
|
+
*/
|
|
469
|
+
wind_gust_ms?: null | number;
|
|
470
|
+
/**
|
|
471
|
+
* units: m/s
|
|
472
|
+
*/
|
|
473
|
+
wind_u_ms_10m?: null | number;
|
|
474
|
+
/**
|
|
475
|
+
* units: m/s
|
|
476
|
+
*/
|
|
477
|
+
wind_v_ms_10m?: null | number;
|
|
478
|
+
}
|
|
479
|
+
|
|
395
480
|
interface StationInfo {
|
|
396
481
|
code: string | null;
|
|
397
482
|
ghcnh_id: string | null;
|
|
@@ -864,4 +949,4 @@ declare const version = "0.0.0";
|
|
|
864
949
|
*/
|
|
865
950
|
declare function helloCore(): string;
|
|
866
951
|
|
|
867
|
-
export { AuthenticationError, CATALOG, CLIMATE_REPORT_TYPE_PRIORITY, DATA_AVAILABILITY_REASONS, DataAvailabilityError, type DataAvailabilityErrorOptions, type DataAvailabilityReason, DeferredMarketError, type FetchWithRetryOptions, ForbiddenError, type ForecastIemMosV1, type ForecastStationV1, IssuedAtMissingError, type IssuedAtMissingErrorOptions, LIVE_V1_POLICY, LeakageError, type LeakageErrorOptions, LiveStreamError, MostlyRightError, type MostlyRightErrorOptions, NoLiveDataError, type NoLiveDataErrorOptions, NotFoundError, NwpNotAvailableError, type NwpNotAvailableErrorOptions, OBSERVATION_SOURCE_PRIORITY, type ObservationLedgerV1, type ObservationQcV1, type ObservationV1, OpenMeteoSeamlessLeakageError, type OpenMeteoSeamlessLeakageErrorOptions, PayloadTooLargeError, type PayloadTooLargeErrorOptions, PolymarketEventError, QC_ALPHA_RULES, QC_ALPHA_RULES_BY_ID, type QcAlphaRule, RateLimitError, type RateLimitErrorOptions, STATIONS, STATION_BY_CODE, STATION_BY_ICAO, SchemaValidationError, type SchemaValidationErrorOptions, ServerError, type SettlementCliV1, SourceMismatchError, type SourceMismatchErrorOptions, type SourceMismatchRole, SourceUnavailableError, type SourceUnavailableErrorOptions, type Station, StationCatalog, type StationInfo, TemporalDriftError, type TemporalDriftErrorOptions, TherminalError, type TherminalErrorOptions, ValidationError, _CLI_PUBLICATION_DELAY_HOURS, _JAN_REF, _MARKET_CLOSE_HOUR_LST, _MARKET_CLOSE_MINUTE_LST, _STATION_TZ, _lstOffsetHours, _resolveStationTz, cliAvailableAt, fetchWithRetry, helloCore, marketCloseUtc, settlementDateFor, settlementWindowUtc, toJsonSafe, version };
|
|
952
|
+
export { AuthenticationError, CATALOG, CLIMATE_REPORT_TYPE_PRIORITY, DATA_AVAILABILITY_REASONS, DataAvailabilityError, type DataAvailabilityErrorOptions, type DataAvailabilityReason, DeferredMarketError, type FetchWithRetryOptions, ForbiddenError, type ForecastIemMosV1, type ForecastNwpV1, type ForecastStationV1, IssuedAtMissingError, type IssuedAtMissingErrorOptions, LIVE_V1_POLICY, LeakageError, type LeakageErrorOptions, LiveStreamError, MostlyRightError, type MostlyRightErrorOptions, NoLiveDataError, type NoLiveDataErrorOptions, NotFoundError, NwpNotAvailableError, type NwpNotAvailableErrorOptions, OBSERVATION_SOURCE_PRIORITY, type ObservationLedgerV1, type ObservationQcV1, type ObservationV1, OpenMeteoSeamlessLeakageError, type OpenMeteoSeamlessLeakageErrorOptions, PayloadTooLargeError, type PayloadTooLargeErrorOptions, PolymarketEventError, QC_ALPHA_RULES, QC_ALPHA_RULES_BY_ID, type QcAlphaRule, RateLimitError, type RateLimitErrorOptions, STATIONS, STATION_BY_CODE, STATION_BY_ICAO, SchemaValidationError, type SchemaValidationErrorOptions, ServerError, type SettlementCliV1, SourceMismatchError, type SourceMismatchErrorOptions, type SourceMismatchRole, SourceUnavailableError, type SourceUnavailableErrorOptions, type Station, StationCatalog, type StationInfo, TemporalDriftError, type TemporalDriftErrorOptions, TherminalError, type TherminalErrorOptions, ValidationError, _CLI_PUBLICATION_DELAY_HOURS, _JAN_REF, _MARKET_CLOSE_HOUR_LST, _MARKET_CLOSE_MINUTE_LST, _STATION_TZ, _lstOffsetHours, _resolveStationTz, cliAvailableAt, fetchWithRetry, helloCore, marketCloseUtc, settlementDateFor, settlementWindowUtc, toJsonSafe, version };
|
package/dist/index.d.ts
CHANGED
|
@@ -392,6 +392,91 @@ interface ObservationQcV1 {
|
|
|
392
392
|
station_code: string;
|
|
393
393
|
}
|
|
394
394
|
|
|
395
|
+
interface ForecastNwpV1 {
|
|
396
|
+
/**
|
|
397
|
+
* units: m
|
|
398
|
+
*/
|
|
399
|
+
cloud_ceiling_m?: null | number;
|
|
400
|
+
/**
|
|
401
|
+
* units: percent
|
|
402
|
+
*/
|
|
403
|
+
cloud_cover_pct?: null | number;
|
|
404
|
+
/**
|
|
405
|
+
* units: K
|
|
406
|
+
*/
|
|
407
|
+
dewpoint_k_2m?: null | number;
|
|
408
|
+
/**
|
|
409
|
+
* units: hours — lead time in hours (alias: fxx)
|
|
410
|
+
*/
|
|
411
|
+
forecast_hour: number;
|
|
412
|
+
/**
|
|
413
|
+
* units: km — great-circle distance from station to nearest grid cell
|
|
414
|
+
*/
|
|
415
|
+
grid_dist_km: number;
|
|
416
|
+
/**
|
|
417
|
+
* grid-projection label (lambert_conformal_conus, regular_latlon_global_0p25, ...)
|
|
418
|
+
*/
|
|
419
|
+
grid_kind: string;
|
|
420
|
+
/**
|
|
421
|
+
* model run / cycle reference time
|
|
422
|
+
*/
|
|
423
|
+
issued_at: string;
|
|
424
|
+
/**
|
|
425
|
+
* NOAA BDP mirror that served the underlying bytes
|
|
426
|
+
*/
|
|
427
|
+
mirror: "aws_bdp" | "azure_bdp" | "ecmwf_aws" | "ecmwf_azure" | "ecmwf_data_portal" | "ecmwf_gcp" | "gcp_bdp" | "msc" | "nomads";
|
|
428
|
+
model: "cfs" | "ecmwf_aifs_ens" | "ecmwf_aifs_single" | "ecmwf_ifs_ens" | "ecmwf_ifs_hres" | "gdas" | "gdps" | "gefs" | "geps" | "gfs" | "hafs" | "hiresw" | "hrdps" | "href" | "hrrr" | "hrrrak" | "nam" | "nbm" | "rap" | "rdps" | "reps" | "rrfs" | "rtma" | "urma";
|
|
429
|
+
/**
|
|
430
|
+
* units: mm
|
|
431
|
+
*/
|
|
432
|
+
precip_mm_1h?: null | number;
|
|
433
|
+
/**
|
|
434
|
+
* units: Pa
|
|
435
|
+
*/
|
|
436
|
+
pressure_pa_mslp?: null | number;
|
|
437
|
+
/**
|
|
438
|
+
* units: Pa
|
|
439
|
+
*/
|
|
440
|
+
pressure_pa_surface?: null | number;
|
|
441
|
+
/**
|
|
442
|
+
* inline physics-bounds verdict; finer-grained QC lands in Phase 3.4
|
|
443
|
+
*/
|
|
444
|
+
qc_status: "clean" | "flagged" | "suspect";
|
|
445
|
+
/**
|
|
446
|
+
* units: percent
|
|
447
|
+
*/
|
|
448
|
+
relative_humidity_pct_2m?: null | number;
|
|
449
|
+
/**
|
|
450
|
+
* wall-clock UTC when the bytes were fetched
|
|
451
|
+
*/
|
|
452
|
+
retrieved_at: string;
|
|
453
|
+
station: string;
|
|
454
|
+
/**
|
|
455
|
+
* units: K
|
|
456
|
+
*/
|
|
457
|
+
temp_k_2m?: null | number;
|
|
458
|
+
/**
|
|
459
|
+
* forecast target time = issued_at + forecast_hour
|
|
460
|
+
*/
|
|
461
|
+
valid_at: string;
|
|
462
|
+
/**
|
|
463
|
+
* units: m
|
|
464
|
+
*/
|
|
465
|
+
visibility_m?: null | number;
|
|
466
|
+
/**
|
|
467
|
+
* units: m/s
|
|
468
|
+
*/
|
|
469
|
+
wind_gust_ms?: null | number;
|
|
470
|
+
/**
|
|
471
|
+
* units: m/s
|
|
472
|
+
*/
|
|
473
|
+
wind_u_ms_10m?: null | number;
|
|
474
|
+
/**
|
|
475
|
+
* units: m/s
|
|
476
|
+
*/
|
|
477
|
+
wind_v_ms_10m?: null | number;
|
|
478
|
+
}
|
|
479
|
+
|
|
395
480
|
interface StationInfo {
|
|
396
481
|
code: string | null;
|
|
397
482
|
ghcnh_id: string | null;
|
|
@@ -864,4 +949,4 @@ declare const version = "0.0.0";
|
|
|
864
949
|
*/
|
|
865
950
|
declare function helloCore(): string;
|
|
866
951
|
|
|
867
|
-
export { AuthenticationError, CATALOG, CLIMATE_REPORT_TYPE_PRIORITY, DATA_AVAILABILITY_REASONS, DataAvailabilityError, type DataAvailabilityErrorOptions, type DataAvailabilityReason, DeferredMarketError, type FetchWithRetryOptions, ForbiddenError, type ForecastIemMosV1, type ForecastStationV1, IssuedAtMissingError, type IssuedAtMissingErrorOptions, LIVE_V1_POLICY, LeakageError, type LeakageErrorOptions, LiveStreamError, MostlyRightError, type MostlyRightErrorOptions, NoLiveDataError, type NoLiveDataErrorOptions, NotFoundError, NwpNotAvailableError, type NwpNotAvailableErrorOptions, OBSERVATION_SOURCE_PRIORITY, type ObservationLedgerV1, type ObservationQcV1, type ObservationV1, OpenMeteoSeamlessLeakageError, type OpenMeteoSeamlessLeakageErrorOptions, PayloadTooLargeError, type PayloadTooLargeErrorOptions, PolymarketEventError, QC_ALPHA_RULES, QC_ALPHA_RULES_BY_ID, type QcAlphaRule, RateLimitError, type RateLimitErrorOptions, STATIONS, STATION_BY_CODE, STATION_BY_ICAO, SchemaValidationError, type SchemaValidationErrorOptions, ServerError, type SettlementCliV1, SourceMismatchError, type SourceMismatchErrorOptions, type SourceMismatchRole, SourceUnavailableError, type SourceUnavailableErrorOptions, type Station, StationCatalog, type StationInfo, TemporalDriftError, type TemporalDriftErrorOptions, TherminalError, type TherminalErrorOptions, ValidationError, _CLI_PUBLICATION_DELAY_HOURS, _JAN_REF, _MARKET_CLOSE_HOUR_LST, _MARKET_CLOSE_MINUTE_LST, _STATION_TZ, _lstOffsetHours, _resolveStationTz, cliAvailableAt, fetchWithRetry, helloCore, marketCloseUtc, settlementDateFor, settlementWindowUtc, toJsonSafe, version };
|
|
952
|
+
export { AuthenticationError, CATALOG, CLIMATE_REPORT_TYPE_PRIORITY, DATA_AVAILABILITY_REASONS, DataAvailabilityError, type DataAvailabilityErrorOptions, type DataAvailabilityReason, DeferredMarketError, type FetchWithRetryOptions, ForbiddenError, type ForecastIemMosV1, type ForecastNwpV1, type ForecastStationV1, IssuedAtMissingError, type IssuedAtMissingErrorOptions, LIVE_V1_POLICY, LeakageError, type LeakageErrorOptions, LiveStreamError, MostlyRightError, type MostlyRightErrorOptions, NoLiveDataError, type NoLiveDataErrorOptions, NotFoundError, NwpNotAvailableError, type NwpNotAvailableErrorOptions, OBSERVATION_SOURCE_PRIORITY, type ObservationLedgerV1, type ObservationQcV1, type ObservationV1, OpenMeteoSeamlessLeakageError, type OpenMeteoSeamlessLeakageErrorOptions, PayloadTooLargeError, type PayloadTooLargeErrorOptions, PolymarketEventError, QC_ALPHA_RULES, QC_ALPHA_RULES_BY_ID, type QcAlphaRule, RateLimitError, type RateLimitErrorOptions, STATIONS, STATION_BY_CODE, STATION_BY_ICAO, SchemaValidationError, type SchemaValidationErrorOptions, ServerError, type SettlementCliV1, SourceMismatchError, type SourceMismatchErrorOptions, type SourceMismatchRole, SourceUnavailableError, type SourceUnavailableErrorOptions, type Station, StationCatalog, type StationInfo, TemporalDriftError, type TemporalDriftErrorOptions, TherminalError, type TherminalErrorOptions, ValidationError, _CLI_PUBLICATION_DELAY_HOURS, _JAN_REF, _MARKET_CLOSE_HOUR_LST, _MARKET_CLOSE_MINUTE_LST, _STATION_TZ, _lstOffsetHours, _resolveStationTz, cliAvailableAt, fetchWithRetry, helloCore, marketCloseUtc, settlementDateFor, settlementWindowUtc, toJsonSafe, version };
|
package/dist/validator.cjs
CHANGED
|
@@ -169,6 +169,410 @@ var SourceMismatchError = class extends MostlyRightError {
|
|
|
169
169
|
}
|
|
170
170
|
};
|
|
171
171
|
|
|
172
|
+
// src/schemas/validators/schema_forecast_nwp_v1.js
|
|
173
|
+
var schema_forecast_nwp_v1 = validate26;
|
|
174
|
+
var schema37 = { "$id": "https://mostlyright.dev/schemas/schema.forecast_nwp.v1.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "properties": { "cloud_ceiling_m": { "description": "units: m", "type": ["null", "number"] }, "cloud_cover_pct": { "description": "units: percent", "type": ["null", "number"] }, "dewpoint_k_2m": { "description": "units: K", "type": ["null", "number"] }, "forecast_hour": { "description": "units: hours \u2014 lead time in hours (alias: fxx)", "type": "integer" }, "grid_dist_km": { "description": "units: km \u2014 great-circle distance from station to nearest grid cell", "type": "number" }, "grid_kind": { "description": "grid-projection label (lambert_conformal_conus, regular_latlon_global_0p25, ...)", "type": "string" }, "issued_at": { "description": "model run / cycle reference time", "format": "date-time", "type": "string" }, "mirror": { "description": "NOAA BDP mirror that served the underlying bytes", "enum": ["aws_bdp", "azure_bdp", "ecmwf_aws", "ecmwf_azure", "ecmwf_data_portal", "ecmwf_gcp", "gcp_bdp", "msc", "nomads"], "type": "string" }, "model": { "enum": ["cfs", "ecmwf_aifs_ens", "ecmwf_aifs_single", "ecmwf_ifs_ens", "ecmwf_ifs_hres", "gdas", "gdps", "gefs", "geps", "gfs", "hafs", "hiresw", "hrdps", "href", "hrrr", "hrrrak", "nam", "nbm", "rap", "rdps", "reps", "rrfs", "rtma", "urma"], "type": "string" }, "precip_mm_1h": { "description": "units: mm", "type": ["null", "number"] }, "pressure_pa_mslp": { "description": "units: Pa", "type": ["null", "number"] }, "pressure_pa_surface": { "description": "units: Pa", "type": ["null", "number"] }, "qc_status": { "description": "inline physics-bounds verdict; finer-grained QC lands in Phase 3.4", "enum": ["clean", "flagged", "suspect"], "type": "string" }, "relative_humidity_pct_2m": { "description": "units: percent", "type": ["null", "number"] }, "retrieved_at": { "description": "wall-clock UTC when the bytes were fetched", "format": "date-time", "type": "string" }, "station": { "type": "string" }, "temp_k_2m": { "description": "units: K", "type": ["null", "number"] }, "valid_at": { "description": "forecast target time = issued_at + forecast_hour", "format": "date-time", "type": "string" }, "visibility_m": { "description": "units: m", "type": ["null", "number"] }, "wind_gust_ms": { "description": "units: m/s", "type": ["null", "number"] }, "wind_u_ms_10m": { "description": "units: m/s", "type": ["null", "number"] }, "wind_v_ms_10m": { "description": "units: m/s", "type": ["null", "number"] } }, "required": ["forecast_hour", "grid_dist_km", "grid_kind", "issued_at", "mirror", "model", "qc_status", "retrieved_at", "station", "valid_at"], "title": "schema.forecast_nwp.v1", "type": "object", "version": "v1" };
|
|
175
|
+
function validate26(data, { instancePath = "", parentData, parentDataProperty, rootData = data, dynamicAnchors = {} } = {}) {
|
|
176
|
+
;
|
|
177
|
+
let vErrors = null;
|
|
178
|
+
let errors = 0;
|
|
179
|
+
const evaluated0 = validate26.evaluated;
|
|
180
|
+
if (evaluated0.dynamicProps) {
|
|
181
|
+
evaluated0.props = void 0;
|
|
182
|
+
}
|
|
183
|
+
if (evaluated0.dynamicItems) {
|
|
184
|
+
evaluated0.items = void 0;
|
|
185
|
+
}
|
|
186
|
+
if (data && typeof data == "object" && !Array.isArray(data)) {
|
|
187
|
+
if (data.forecast_hour === void 0) {
|
|
188
|
+
const err0 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "forecast_hour" }, message: "must have required property 'forecast_hour'" };
|
|
189
|
+
if (vErrors === null) {
|
|
190
|
+
vErrors = [err0];
|
|
191
|
+
} else {
|
|
192
|
+
vErrors.push(err0);
|
|
193
|
+
}
|
|
194
|
+
errors++;
|
|
195
|
+
}
|
|
196
|
+
if (data.grid_dist_km === void 0) {
|
|
197
|
+
const err1 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "grid_dist_km" }, message: "must have required property 'grid_dist_km'" };
|
|
198
|
+
if (vErrors === null) {
|
|
199
|
+
vErrors = [err1];
|
|
200
|
+
} else {
|
|
201
|
+
vErrors.push(err1);
|
|
202
|
+
}
|
|
203
|
+
errors++;
|
|
204
|
+
}
|
|
205
|
+
if (data.grid_kind === void 0) {
|
|
206
|
+
const err2 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "grid_kind" }, message: "must have required property 'grid_kind'" };
|
|
207
|
+
if (vErrors === null) {
|
|
208
|
+
vErrors = [err2];
|
|
209
|
+
} else {
|
|
210
|
+
vErrors.push(err2);
|
|
211
|
+
}
|
|
212
|
+
errors++;
|
|
213
|
+
}
|
|
214
|
+
if (data.issued_at === void 0) {
|
|
215
|
+
const err3 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "issued_at" }, message: "must have required property 'issued_at'" };
|
|
216
|
+
if (vErrors === null) {
|
|
217
|
+
vErrors = [err3];
|
|
218
|
+
} else {
|
|
219
|
+
vErrors.push(err3);
|
|
220
|
+
}
|
|
221
|
+
errors++;
|
|
222
|
+
}
|
|
223
|
+
if (data.mirror === void 0) {
|
|
224
|
+
const err4 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "mirror" }, message: "must have required property 'mirror'" };
|
|
225
|
+
if (vErrors === null) {
|
|
226
|
+
vErrors = [err4];
|
|
227
|
+
} else {
|
|
228
|
+
vErrors.push(err4);
|
|
229
|
+
}
|
|
230
|
+
errors++;
|
|
231
|
+
}
|
|
232
|
+
if (data.model === void 0) {
|
|
233
|
+
const err5 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "model" }, message: "must have required property 'model'" };
|
|
234
|
+
if (vErrors === null) {
|
|
235
|
+
vErrors = [err5];
|
|
236
|
+
} else {
|
|
237
|
+
vErrors.push(err5);
|
|
238
|
+
}
|
|
239
|
+
errors++;
|
|
240
|
+
}
|
|
241
|
+
if (data.qc_status === void 0) {
|
|
242
|
+
const err6 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "qc_status" }, message: "must have required property 'qc_status'" };
|
|
243
|
+
if (vErrors === null) {
|
|
244
|
+
vErrors = [err6];
|
|
245
|
+
} else {
|
|
246
|
+
vErrors.push(err6);
|
|
247
|
+
}
|
|
248
|
+
errors++;
|
|
249
|
+
}
|
|
250
|
+
if (data.retrieved_at === void 0) {
|
|
251
|
+
const err7 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "retrieved_at" }, message: "must have required property 'retrieved_at'" };
|
|
252
|
+
if (vErrors === null) {
|
|
253
|
+
vErrors = [err7];
|
|
254
|
+
} else {
|
|
255
|
+
vErrors.push(err7);
|
|
256
|
+
}
|
|
257
|
+
errors++;
|
|
258
|
+
}
|
|
259
|
+
if (data.station === void 0) {
|
|
260
|
+
const err8 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "station" }, message: "must have required property 'station'" };
|
|
261
|
+
if (vErrors === null) {
|
|
262
|
+
vErrors = [err8];
|
|
263
|
+
} else {
|
|
264
|
+
vErrors.push(err8);
|
|
265
|
+
}
|
|
266
|
+
errors++;
|
|
267
|
+
}
|
|
268
|
+
if (data.valid_at === void 0) {
|
|
269
|
+
const err9 = { instancePath, schemaPath: "#/required", keyword: "required", params: { missingProperty: "valid_at" }, message: "must have required property 'valid_at'" };
|
|
270
|
+
if (vErrors === null) {
|
|
271
|
+
vErrors = [err9];
|
|
272
|
+
} else {
|
|
273
|
+
vErrors.push(err9);
|
|
274
|
+
}
|
|
275
|
+
errors++;
|
|
276
|
+
}
|
|
277
|
+
if (data.cloud_ceiling_m !== void 0) {
|
|
278
|
+
let data0 = data.cloud_ceiling_m;
|
|
279
|
+
if (data0 !== null && !(typeof data0 == "number")) {
|
|
280
|
+
const err10 = { instancePath: instancePath + "/cloud_ceiling_m", schemaPath: "#/properties/cloud_ceiling_m/type", keyword: "type", params: { type: schema37.properties.cloud_ceiling_m.type }, message: "must be null,number" };
|
|
281
|
+
if (vErrors === null) {
|
|
282
|
+
vErrors = [err10];
|
|
283
|
+
} else {
|
|
284
|
+
vErrors.push(err10);
|
|
285
|
+
}
|
|
286
|
+
errors++;
|
|
287
|
+
}
|
|
288
|
+
}
|
|
289
|
+
if (data.cloud_cover_pct !== void 0) {
|
|
290
|
+
let data1 = data.cloud_cover_pct;
|
|
291
|
+
if (data1 !== null && !(typeof data1 == "number")) {
|
|
292
|
+
const err11 = { instancePath: instancePath + "/cloud_cover_pct", schemaPath: "#/properties/cloud_cover_pct/type", keyword: "type", params: { type: schema37.properties.cloud_cover_pct.type }, message: "must be null,number" };
|
|
293
|
+
if (vErrors === null) {
|
|
294
|
+
vErrors = [err11];
|
|
295
|
+
} else {
|
|
296
|
+
vErrors.push(err11);
|
|
297
|
+
}
|
|
298
|
+
errors++;
|
|
299
|
+
}
|
|
300
|
+
}
|
|
301
|
+
if (data.dewpoint_k_2m !== void 0) {
|
|
302
|
+
let data2 = data.dewpoint_k_2m;
|
|
303
|
+
if (data2 !== null && !(typeof data2 == "number")) {
|
|
304
|
+
const err12 = { instancePath: instancePath + "/dewpoint_k_2m", schemaPath: "#/properties/dewpoint_k_2m/type", keyword: "type", params: { type: schema37.properties.dewpoint_k_2m.type }, message: "must be null,number" };
|
|
305
|
+
if (vErrors === null) {
|
|
306
|
+
vErrors = [err12];
|
|
307
|
+
} else {
|
|
308
|
+
vErrors.push(err12);
|
|
309
|
+
}
|
|
310
|
+
errors++;
|
|
311
|
+
}
|
|
312
|
+
}
|
|
313
|
+
if (data.forecast_hour !== void 0) {
|
|
314
|
+
let data3 = data.forecast_hour;
|
|
315
|
+
if (!(typeof data3 == "number" && (!(data3 % 1) && !isNaN(data3)))) {
|
|
316
|
+
const err13 = { instancePath: instancePath + "/forecast_hour", schemaPath: "#/properties/forecast_hour/type", keyword: "type", params: { type: "integer" }, message: "must be integer" };
|
|
317
|
+
if (vErrors === null) {
|
|
318
|
+
vErrors = [err13];
|
|
319
|
+
} else {
|
|
320
|
+
vErrors.push(err13);
|
|
321
|
+
}
|
|
322
|
+
errors++;
|
|
323
|
+
}
|
|
324
|
+
}
|
|
325
|
+
if (data.grid_dist_km !== void 0) {
|
|
326
|
+
if (!(typeof data.grid_dist_km == "number")) {
|
|
327
|
+
const err14 = { instancePath: instancePath + "/grid_dist_km", schemaPath: "#/properties/grid_dist_km/type", keyword: "type", params: { type: "number" }, message: "must be number" };
|
|
328
|
+
if (vErrors === null) {
|
|
329
|
+
vErrors = [err14];
|
|
330
|
+
} else {
|
|
331
|
+
vErrors.push(err14);
|
|
332
|
+
}
|
|
333
|
+
errors++;
|
|
334
|
+
}
|
|
335
|
+
}
|
|
336
|
+
if (data.grid_kind !== void 0) {
|
|
337
|
+
if (typeof data.grid_kind !== "string") {
|
|
338
|
+
const err15 = { instancePath: instancePath + "/grid_kind", schemaPath: "#/properties/grid_kind/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
339
|
+
if (vErrors === null) {
|
|
340
|
+
vErrors = [err15];
|
|
341
|
+
} else {
|
|
342
|
+
vErrors.push(err15);
|
|
343
|
+
}
|
|
344
|
+
errors++;
|
|
345
|
+
}
|
|
346
|
+
}
|
|
347
|
+
if (data.issued_at !== void 0) {
|
|
348
|
+
if (!(typeof data.issued_at === "string")) {
|
|
349
|
+
const err16 = { instancePath: instancePath + "/issued_at", schemaPath: "#/properties/issued_at/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
350
|
+
if (vErrors === null) {
|
|
351
|
+
vErrors = [err16];
|
|
352
|
+
} else {
|
|
353
|
+
vErrors.push(err16);
|
|
354
|
+
}
|
|
355
|
+
errors++;
|
|
356
|
+
}
|
|
357
|
+
}
|
|
358
|
+
if (data.mirror !== void 0) {
|
|
359
|
+
let data7 = data.mirror;
|
|
360
|
+
if (typeof data7 !== "string") {
|
|
361
|
+
const err17 = { instancePath: instancePath + "/mirror", schemaPath: "#/properties/mirror/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
362
|
+
if (vErrors === null) {
|
|
363
|
+
vErrors = [err17];
|
|
364
|
+
} else {
|
|
365
|
+
vErrors.push(err17);
|
|
366
|
+
}
|
|
367
|
+
errors++;
|
|
368
|
+
}
|
|
369
|
+
if (!(data7 === "aws_bdp" || data7 === "azure_bdp" || data7 === "ecmwf_aws" || data7 === "ecmwf_azure" || data7 === "ecmwf_data_portal" || data7 === "ecmwf_gcp" || data7 === "gcp_bdp" || data7 === "msc" || data7 === "nomads")) {
|
|
370
|
+
const err18 = { instancePath: instancePath + "/mirror", schemaPath: "#/properties/mirror/enum", keyword: "enum", params: { allowedValues: schema37.properties.mirror.enum }, message: "must be equal to one of the allowed values" };
|
|
371
|
+
if (vErrors === null) {
|
|
372
|
+
vErrors = [err18];
|
|
373
|
+
} else {
|
|
374
|
+
vErrors.push(err18);
|
|
375
|
+
}
|
|
376
|
+
errors++;
|
|
377
|
+
}
|
|
378
|
+
}
|
|
379
|
+
if (data.model !== void 0) {
|
|
380
|
+
let data8 = data.model;
|
|
381
|
+
if (typeof data8 !== "string") {
|
|
382
|
+
const err19 = { instancePath: instancePath + "/model", schemaPath: "#/properties/model/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
383
|
+
if (vErrors === null) {
|
|
384
|
+
vErrors = [err19];
|
|
385
|
+
} else {
|
|
386
|
+
vErrors.push(err19);
|
|
387
|
+
}
|
|
388
|
+
errors++;
|
|
389
|
+
}
|
|
390
|
+
if (!(data8 === "cfs" || data8 === "ecmwf_aifs_ens" || data8 === "ecmwf_aifs_single" || data8 === "ecmwf_ifs_ens" || data8 === "ecmwf_ifs_hres" || data8 === "gdas" || data8 === "gdps" || data8 === "gefs" || data8 === "geps" || data8 === "gfs" || data8 === "hafs" || data8 === "hiresw" || data8 === "hrdps" || data8 === "href" || data8 === "hrrr" || data8 === "hrrrak" || data8 === "nam" || data8 === "nbm" || data8 === "rap" || data8 === "rdps" || data8 === "reps" || data8 === "rrfs" || data8 === "rtma" || data8 === "urma")) {
|
|
391
|
+
const err20 = { instancePath: instancePath + "/model", schemaPath: "#/properties/model/enum", keyword: "enum", params: { allowedValues: schema37.properties.model.enum }, message: "must be equal to one of the allowed values" };
|
|
392
|
+
if (vErrors === null) {
|
|
393
|
+
vErrors = [err20];
|
|
394
|
+
} else {
|
|
395
|
+
vErrors.push(err20);
|
|
396
|
+
}
|
|
397
|
+
errors++;
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
if (data.precip_mm_1h !== void 0) {
|
|
401
|
+
let data9 = data.precip_mm_1h;
|
|
402
|
+
if (data9 !== null && !(typeof data9 == "number")) {
|
|
403
|
+
const err21 = { instancePath: instancePath + "/precip_mm_1h", schemaPath: "#/properties/precip_mm_1h/type", keyword: "type", params: { type: schema37.properties.precip_mm_1h.type }, message: "must be null,number" };
|
|
404
|
+
if (vErrors === null) {
|
|
405
|
+
vErrors = [err21];
|
|
406
|
+
} else {
|
|
407
|
+
vErrors.push(err21);
|
|
408
|
+
}
|
|
409
|
+
errors++;
|
|
410
|
+
}
|
|
411
|
+
}
|
|
412
|
+
if (data.pressure_pa_mslp !== void 0) {
|
|
413
|
+
let data10 = data.pressure_pa_mslp;
|
|
414
|
+
if (data10 !== null && !(typeof data10 == "number")) {
|
|
415
|
+
const err22 = { instancePath: instancePath + "/pressure_pa_mslp", schemaPath: "#/properties/pressure_pa_mslp/type", keyword: "type", params: { type: schema37.properties.pressure_pa_mslp.type }, message: "must be null,number" };
|
|
416
|
+
if (vErrors === null) {
|
|
417
|
+
vErrors = [err22];
|
|
418
|
+
} else {
|
|
419
|
+
vErrors.push(err22);
|
|
420
|
+
}
|
|
421
|
+
errors++;
|
|
422
|
+
}
|
|
423
|
+
}
|
|
424
|
+
if (data.pressure_pa_surface !== void 0) {
|
|
425
|
+
let data11 = data.pressure_pa_surface;
|
|
426
|
+
if (data11 !== null && !(typeof data11 == "number")) {
|
|
427
|
+
const err23 = { instancePath: instancePath + "/pressure_pa_surface", schemaPath: "#/properties/pressure_pa_surface/type", keyword: "type", params: { type: schema37.properties.pressure_pa_surface.type }, message: "must be null,number" };
|
|
428
|
+
if (vErrors === null) {
|
|
429
|
+
vErrors = [err23];
|
|
430
|
+
} else {
|
|
431
|
+
vErrors.push(err23);
|
|
432
|
+
}
|
|
433
|
+
errors++;
|
|
434
|
+
}
|
|
435
|
+
}
|
|
436
|
+
if (data.qc_status !== void 0) {
|
|
437
|
+
let data12 = data.qc_status;
|
|
438
|
+
if (typeof data12 !== "string") {
|
|
439
|
+
const err24 = { instancePath: instancePath + "/qc_status", schemaPath: "#/properties/qc_status/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
440
|
+
if (vErrors === null) {
|
|
441
|
+
vErrors = [err24];
|
|
442
|
+
} else {
|
|
443
|
+
vErrors.push(err24);
|
|
444
|
+
}
|
|
445
|
+
errors++;
|
|
446
|
+
}
|
|
447
|
+
if (!(data12 === "clean" || data12 === "flagged" || data12 === "suspect")) {
|
|
448
|
+
const err25 = { instancePath: instancePath + "/qc_status", schemaPath: "#/properties/qc_status/enum", keyword: "enum", params: { allowedValues: schema37.properties.qc_status.enum }, message: "must be equal to one of the allowed values" };
|
|
449
|
+
if (vErrors === null) {
|
|
450
|
+
vErrors = [err25];
|
|
451
|
+
} else {
|
|
452
|
+
vErrors.push(err25);
|
|
453
|
+
}
|
|
454
|
+
errors++;
|
|
455
|
+
}
|
|
456
|
+
}
|
|
457
|
+
if (data.relative_humidity_pct_2m !== void 0) {
|
|
458
|
+
let data13 = data.relative_humidity_pct_2m;
|
|
459
|
+
if (data13 !== null && !(typeof data13 == "number")) {
|
|
460
|
+
const err26 = { instancePath: instancePath + "/relative_humidity_pct_2m", schemaPath: "#/properties/relative_humidity_pct_2m/type", keyword: "type", params: { type: schema37.properties.relative_humidity_pct_2m.type }, message: "must be null,number" };
|
|
461
|
+
if (vErrors === null) {
|
|
462
|
+
vErrors = [err26];
|
|
463
|
+
} else {
|
|
464
|
+
vErrors.push(err26);
|
|
465
|
+
}
|
|
466
|
+
errors++;
|
|
467
|
+
}
|
|
468
|
+
}
|
|
469
|
+
if (data.retrieved_at !== void 0) {
|
|
470
|
+
if (!(typeof data.retrieved_at === "string")) {
|
|
471
|
+
const err27 = { instancePath: instancePath + "/retrieved_at", schemaPath: "#/properties/retrieved_at/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
472
|
+
if (vErrors === null) {
|
|
473
|
+
vErrors = [err27];
|
|
474
|
+
} else {
|
|
475
|
+
vErrors.push(err27);
|
|
476
|
+
}
|
|
477
|
+
errors++;
|
|
478
|
+
}
|
|
479
|
+
}
|
|
480
|
+
if (data.station !== void 0) {
|
|
481
|
+
if (typeof data.station !== "string") {
|
|
482
|
+
const err28 = { instancePath: instancePath + "/station", schemaPath: "#/properties/station/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
483
|
+
if (vErrors === null) {
|
|
484
|
+
vErrors = [err28];
|
|
485
|
+
} else {
|
|
486
|
+
vErrors.push(err28);
|
|
487
|
+
}
|
|
488
|
+
errors++;
|
|
489
|
+
}
|
|
490
|
+
}
|
|
491
|
+
if (data.temp_k_2m !== void 0) {
|
|
492
|
+
let data16 = data.temp_k_2m;
|
|
493
|
+
if (data16 !== null && !(typeof data16 == "number")) {
|
|
494
|
+
const err29 = { instancePath: instancePath + "/temp_k_2m", schemaPath: "#/properties/temp_k_2m/type", keyword: "type", params: { type: schema37.properties.temp_k_2m.type }, message: "must be null,number" };
|
|
495
|
+
if (vErrors === null) {
|
|
496
|
+
vErrors = [err29];
|
|
497
|
+
} else {
|
|
498
|
+
vErrors.push(err29);
|
|
499
|
+
}
|
|
500
|
+
errors++;
|
|
501
|
+
}
|
|
502
|
+
}
|
|
503
|
+
if (data.valid_at !== void 0) {
|
|
504
|
+
if (!(typeof data.valid_at === "string")) {
|
|
505
|
+
const err30 = { instancePath: instancePath + "/valid_at", schemaPath: "#/properties/valid_at/type", keyword: "type", params: { type: "string" }, message: "must be string" };
|
|
506
|
+
if (vErrors === null) {
|
|
507
|
+
vErrors = [err30];
|
|
508
|
+
} else {
|
|
509
|
+
vErrors.push(err30);
|
|
510
|
+
}
|
|
511
|
+
errors++;
|
|
512
|
+
}
|
|
513
|
+
}
|
|
514
|
+
if (data.visibility_m !== void 0) {
|
|
515
|
+
let data18 = data.visibility_m;
|
|
516
|
+
if (data18 !== null && !(typeof data18 == "number")) {
|
|
517
|
+
const err31 = { instancePath: instancePath + "/visibility_m", schemaPath: "#/properties/visibility_m/type", keyword: "type", params: { type: schema37.properties.visibility_m.type }, message: "must be null,number" };
|
|
518
|
+
if (vErrors === null) {
|
|
519
|
+
vErrors = [err31];
|
|
520
|
+
} else {
|
|
521
|
+
vErrors.push(err31);
|
|
522
|
+
}
|
|
523
|
+
errors++;
|
|
524
|
+
}
|
|
525
|
+
}
|
|
526
|
+
if (data.wind_gust_ms !== void 0) {
|
|
527
|
+
let data19 = data.wind_gust_ms;
|
|
528
|
+
if (data19 !== null && !(typeof data19 == "number")) {
|
|
529
|
+
const err32 = { instancePath: instancePath + "/wind_gust_ms", schemaPath: "#/properties/wind_gust_ms/type", keyword: "type", params: { type: schema37.properties.wind_gust_ms.type }, message: "must be null,number" };
|
|
530
|
+
if (vErrors === null) {
|
|
531
|
+
vErrors = [err32];
|
|
532
|
+
} else {
|
|
533
|
+
vErrors.push(err32);
|
|
534
|
+
}
|
|
535
|
+
errors++;
|
|
536
|
+
}
|
|
537
|
+
}
|
|
538
|
+
if (data.wind_u_ms_10m !== void 0) {
|
|
539
|
+
let data20 = data.wind_u_ms_10m;
|
|
540
|
+
if (data20 !== null && !(typeof data20 == "number")) {
|
|
541
|
+
const err33 = { instancePath: instancePath + "/wind_u_ms_10m", schemaPath: "#/properties/wind_u_ms_10m/type", keyword: "type", params: { type: schema37.properties.wind_u_ms_10m.type }, message: "must be null,number" };
|
|
542
|
+
if (vErrors === null) {
|
|
543
|
+
vErrors = [err33];
|
|
544
|
+
} else {
|
|
545
|
+
vErrors.push(err33);
|
|
546
|
+
}
|
|
547
|
+
errors++;
|
|
548
|
+
}
|
|
549
|
+
}
|
|
550
|
+
if (data.wind_v_ms_10m !== void 0) {
|
|
551
|
+
let data21 = data.wind_v_ms_10m;
|
|
552
|
+
if (data21 !== null && !(typeof data21 == "number")) {
|
|
553
|
+
const err34 = { instancePath: instancePath + "/wind_v_ms_10m", schemaPath: "#/properties/wind_v_ms_10m/type", keyword: "type", params: { type: schema37.properties.wind_v_ms_10m.type }, message: "must be null,number" };
|
|
554
|
+
if (vErrors === null) {
|
|
555
|
+
vErrors = [err34];
|
|
556
|
+
} else {
|
|
557
|
+
vErrors.push(err34);
|
|
558
|
+
}
|
|
559
|
+
errors++;
|
|
560
|
+
}
|
|
561
|
+
}
|
|
562
|
+
} else {
|
|
563
|
+
const err35 = { instancePath, schemaPath: "#/type", keyword: "type", params: { type: "object" }, message: "must be object" };
|
|
564
|
+
if (vErrors === null) {
|
|
565
|
+
vErrors = [err35];
|
|
566
|
+
} else {
|
|
567
|
+
vErrors.push(err35);
|
|
568
|
+
}
|
|
569
|
+
errors++;
|
|
570
|
+
}
|
|
571
|
+
validate26.errors = vErrors;
|
|
572
|
+
return errors === 0;
|
|
573
|
+
}
|
|
574
|
+
validate26.evaluated = { "props": { "cloud_ceiling_m": true, "cloud_cover_pct": true, "dewpoint_k_2m": true, "forecast_hour": true, "grid_dist_km": true, "grid_kind": true, "issued_at": true, "mirror": true, "model": true, "precip_mm_1h": true, "pressure_pa_mslp": true, "pressure_pa_surface": true, "qc_status": true, "relative_humidity_pct_2m": true, "retrieved_at": true, "station": true, "temp_k_2m": true, "valid_at": true, "visibility_m": true, "wind_gust_ms": true, "wind_u_ms_10m": true, "wind_v_ms_10m": true }, "dynamicProps": false, "dynamicItems": false };
|
|
575
|
+
|
|
172
576
|
// src/schemas/validators/schema_forecast_iem_mos_v1.js
|
|
173
577
|
var schema_forecast_iem_mos_v1 = validate21;
|
|
174
578
|
var schema32 = { "$id": "https://mostlyright.dev/schemas/schema.forecast.iem_mos.v1.json", "$schema": "https://json-schema.org/draft/2020-12/schema", "imperialRenames": { "apparent_temp_c": "apparent_temp_F", "dew_point_c": "dew_point_F", "temp_c": "temp_F", "wind_gusts_ms": "wind_gusts_kt", "wind_speed_ms": "wind_speed_kt" }, "properties": { "apparent_temp_c": { "description": "units: celsius", "type": ["null", "number"] }, "cape_jkg": { "description": "units: J/kg", "type": ["null", "number"] }, "cloud_cover_pct": { "description": "units: percent", "type": ["integer", "null"] }, "dew_point_c": { "description": "units: celsius", "type": ["null", "number"] }, "direct_radiation_wm2": { "description": "units: W/m^2", "type": ["null", "number"] }, "forecast_hour": { "description": "units: hours \u2014 (valid_at - issued_at).total_seconds() / 3600", "type": "integer" }, "freezing_level_m": { "description": "units: meters", "type": ["integer", "null"] }, "issued_at": { "description": "model run time (knowledge_time). Nullable to accommodate Phase 20 open_meteo.seamless rows whose cycle is unrecoverable from the response. LeakageDetector + assert_issued_at_populated() are the runtime gates that reject null issued_at in training-data paths.", "format": "date-time", "type": ["null", "string"] }, "model": { "description": "e.g. NBE, GFS, LAV, MET, gfs_global, ecmwf_ifs025", "type": "string" }, "precip_probability": { "description": "units: probability \u2014 bounded [0, 1]", "type": ["null", "number"] }, "precipitation_mm": { "description": "units: mm", "type": ["null", "number"] }, "pressure_msl_hpa": { "description": "units: hPa", "type": ["null", "number"] }, "retrieved_at": { "description": "wall-clock time the row was fetched from upstream", "format": "date-time", "type": "string" }, "shortwave_radiation_wm2": { "description": "units: W/m^2", "type": ["null", "number"] }, "sky_cover_pct": { "description": "units: percent \u2014 bounded [0, 100]", "type": ["integer", "null"] }, "snow_depth_m": { "description": "units: meters", "type": ["null", "number"] }, "source": { "description": "iem.archive | open_meteo.previous_runs | open_meteo.single_run | open_meteo.live", "type": "string" }, "station": { "type": "string" }, "surface_pressure_hpa": { "description": "units: hPa", "type": ["null", "number"] }, "temp_c": { "description": "units: celsius", "type": ["null", "number"] }, "valid_at": { "description": "forecast target time (event_time)", "format": "date-time", "type": "string" }, "visibility_m": { "description": "units: meters", "type": ["integer", "null"] }, "weather_code": { "description": "units: WMO 4677 \u2014 WMO weather code (clear, fog, rain, snow, etc.)", "type": ["integer", "null"] }, "wind_dir_deg": { "description": "units: degrees", "type": ["integer", "null"] }, "wind_gusts_ms": { "description": "units: m/s", "type": ["null", "number"] }, "wind_speed_ms": { "description": "units: m/s", "type": ["null", "number"] } }, "required": ["forecast_hour", "model", "retrieved_at", "source", "station", "valid_at"], "title": "schema.forecast.iem_mos.v1", "type": "object", "version": "v1" };
|
|
@@ -2141,6 +2545,11 @@ validate23.evaluated = { "props": { "cli_data_quality": true, "event_time": true
|
|
|
2141
2545
|
|
|
2142
2546
|
// src/schemas/validators/format-map.ts
|
|
2143
2547
|
var FORMAT_MAPS = Object.freeze({
|
|
2548
|
+
"schema.forecast_nwp.v1": Object.freeze({
|
|
2549
|
+
"issued_at": "date-time",
|
|
2550
|
+
"retrieved_at": "date-time",
|
|
2551
|
+
"valid_at": "date-time"
|
|
2552
|
+
}),
|
|
2144
2553
|
"schema.forecast.iem_mos.v1": Object.freeze({
|
|
2145
2554
|
"issued_at": "date-time",
|
|
2146
2555
|
"retrieved_at": "date-time",
|
|
@@ -2174,6 +2583,7 @@ function getFormatMap(schemaId) {
|
|
|
2174
2583
|
|
|
2175
2584
|
// src/schemas/validators/index.ts
|
|
2176
2585
|
var VALIDATORS = {
|
|
2586
|
+
"schema.forecast_nwp.v1": schema_forecast_nwp_v1,
|
|
2177
2587
|
"schema.forecast.iem_mos.v1": schema_forecast_iem_mos_v1,
|
|
2178
2588
|
"schema.forecast.station.v1": schema_forecast_station_v1,
|
|
2179
2589
|
"schema.observation_ledger.v1": schema_observation_ledger_v1,
|