Add progressive web app companion for cross-platform access
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>
This commit is contained in:
parent
46365b713b
commit
e8428de775
12051 changed files with 1799735 additions and 0 deletions
53
pwa/node_modules/ajv/lib/vocabularies/applicator/index.ts
generated
vendored
Normal file
53
pwa/node_modules/ajv/lib/vocabularies/applicator/index.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,53 @@
|
|||
import type {ErrorNoParams, Vocabulary} from "../../types"
|
||||
import additionalItems, {AdditionalItemsError} from "./additionalItems"
|
||||
import prefixItems from "./prefixItems"
|
||||
import items from "./items"
|
||||
import items2020, {ItemsError} from "./items2020"
|
||||
import contains, {ContainsError} from "./contains"
|
||||
import dependencies, {DependenciesError} from "./dependencies"
|
||||
import propertyNames, {PropertyNamesError} from "./propertyNames"
|
||||
import additionalProperties, {AdditionalPropertiesError} from "./additionalProperties"
|
||||
import properties from "./properties"
|
||||
import patternProperties from "./patternProperties"
|
||||
import notKeyword, {NotKeywordError} from "./not"
|
||||
import anyOf, {AnyOfError} from "./anyOf"
|
||||
import oneOf, {OneOfError} from "./oneOf"
|
||||
import allOf from "./allOf"
|
||||
import ifKeyword, {IfKeywordError} from "./if"
|
||||
import thenElse from "./thenElse"
|
||||
|
||||
export default function getApplicator(draft2020 = false): Vocabulary {
|
||||
const applicator = [
|
||||
// any
|
||||
notKeyword,
|
||||
anyOf,
|
||||
oneOf,
|
||||
allOf,
|
||||
ifKeyword,
|
||||
thenElse,
|
||||
// object
|
||||
propertyNames,
|
||||
additionalProperties,
|
||||
dependencies,
|
||||
properties,
|
||||
patternProperties,
|
||||
]
|
||||
// array
|
||||
if (draft2020) applicator.push(prefixItems, items2020)
|
||||
else applicator.push(additionalItems, items)
|
||||
applicator.push(contains)
|
||||
return applicator
|
||||
}
|
||||
|
||||
export type ApplicatorKeywordError =
|
||||
| ErrorNoParams<"false schema">
|
||||
| AdditionalItemsError
|
||||
| ItemsError
|
||||
| ContainsError
|
||||
| AdditionalPropertiesError
|
||||
| DependenciesError
|
||||
| IfKeywordError
|
||||
| AnyOfError
|
||||
| OneOfError
|
||||
| NotKeywordError
|
||||
| PropertyNamesError
|
||||
Loading…
Add table
Add a link
Reference in a new issue