Vite + TypeScript PWA that mirrors the Android app's core features: - Pre-processed shelter data (build-time UTM33N→WGS84 conversion) - Leaflet map with shelter markers, user location, and offline tiles - Canvas compass arrow (ported from DirectionArrowView.kt) - IndexedDB shelter cache with 7-day staleness check - Service worker with CacheFirst tiles and precached app shell - i18n for en, nb, nn (ported from Android strings.xml) - iOS/Android compass handling with low-pass filter - Respects user map interaction (no auto-snap on pan/zoom) - Build revision cache-breaker for reliable SW updates Co-Authored-By: Claude Opus 4.6 <noreply@anthropic.com>
33 lines
No EOL
1.5 KiB
JavaScript
33 lines
No EOL
1.5 KiB
JavaScript
"use strict";
|
|
|
|
exports.__esModule = true;
|
|
exports.hasMinVersion = hasMinVersion;
|
|
var _semver = _interopRequireDefault(require("semver"));
|
|
function _interopRequireDefault(e) { return e && e.__esModule ? e : { default: e }; }
|
|
function hasMinVersion(minVersion, runtimeVersion) {
|
|
// If the range is unavailable, we're running the script during Babel's
|
|
// build process, and we want to assume that all versions are satisfied so
|
|
// that the built output will include all definitions.
|
|
if (!runtimeVersion || !minVersion) return true;
|
|
runtimeVersion = String(runtimeVersion);
|
|
|
|
// semver.intersects() has some surprising behavior with comparing ranges
|
|
// with preprelease versions. We add '^' to ensure that we are always
|
|
// comparing ranges with ranges, which sidesteps this logic.
|
|
// For example:
|
|
//
|
|
// semver.intersects(`<7.0.1`, "7.0.0-beta.0") // false - surprising
|
|
// semver.intersects(`<7.0.1`, "^7.0.0-beta.0") // true - expected
|
|
//
|
|
// This is because the first falls back to
|
|
//
|
|
// semver.satisfies("7.0.0-beta.0", `<7.0.1`) // false - surprising
|
|
//
|
|
// and this fails because a prerelease version can only satisfy a range
|
|
// if it is a prerelease within the same major/minor/patch range.
|
|
//
|
|
// Note: If this is found to have issues, please also revist the logic in
|
|
// babel-core's availableHelper() API.
|
|
if (_semver.default.valid(runtimeVersion)) runtimeVersion = `^${runtimeVersion}`;
|
|
return !_semver.default.intersects(`<${minVersion}`, runtimeVersion) && !_semver.default.intersects(`>=8.0.0`, runtimeVersion);
|
|
} |