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
113
pwa/node_modules/tempy/index.d.ts
generated
vendored
Normal file
113
pwa/node_modules/tempy/index.d.ts
generated
vendored
Normal file
|
|
@ -0,0 +1,113 @@
|
|||
/// <reference types="node"/>
|
||||
import {MergeExclusive, TypedArray} from 'type-fest';
|
||||
|
||||
declare namespace tempy {
|
||||
type FileOptions = MergeExclusive<
|
||||
{
|
||||
/**
|
||||
File extension.
|
||||
|
||||
Mutually exclusive with the `name` option.
|
||||
|
||||
_You usually won't need this option. Specify it only when actually needed._
|
||||
*/
|
||||
readonly extension?: string;
|
||||
},
|
||||
{
|
||||
/**
|
||||
Filename.
|
||||
|
||||
Mutually exclusive with the `extension` option.
|
||||
|
||||
_You usually won't need this option. Specify it only when actually needed._
|
||||
*/
|
||||
readonly name?: string;
|
||||
}
|
||||
>;
|
||||
|
||||
type DirectoryOptions = {
|
||||
/**
|
||||
_You usually won't need this option. Specify it only when actually needed._
|
||||
|
||||
Directory prefix.
|
||||
|
||||
Useful for testing by making it easier to identify cache directories that are created.
|
||||
*/
|
||||
readonly prefix?: string;
|
||||
};
|
||||
}
|
||||
|
||||
declare const tempy: {
|
||||
/**
|
||||
Get a temporary file path you can write to.
|
||||
|
||||
@example
|
||||
```
|
||||
import tempy = require('tempy');
|
||||
|
||||
tempy.file();
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/4f504b9edb5ba0e89451617bf9f971dd'
|
||||
|
||||
tempy.file({extension: 'png'});
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/a9fb0decd08179eb6cf4691568aa2018.png'
|
||||
|
||||
tempy.file({name: 'unicorn.png'});
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/f7f62bfd4e2a05f1589947647ed3f9ec/unicorn.png'
|
||||
|
||||
tempy.directory();
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/2f3d094aec2cb1b93bb0f4cffce5ebd6'
|
||||
```
|
||||
*/
|
||||
file: (options?: tempy.FileOptions) => string;
|
||||
|
||||
/**
|
||||
Get a temporary directory path. The directory is created for you.
|
||||
|
||||
@example
|
||||
```
|
||||
import tempy = require('tempy');
|
||||
|
||||
tempy.directory();
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/2f3d094aec2cb1b93bb0f4cffce5ebd6'
|
||||
|
||||
tempy.directory({prefix: 'a'});
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/name_3c085674ad31223b9653c88f725d6b41'
|
||||
```
|
||||
*/
|
||||
directory: (options?: tempy.DirectoryOptions) => string;
|
||||
|
||||
/**
|
||||
Write data to a random temp file.
|
||||
|
||||
@example
|
||||
```
|
||||
import tempy = require('tempy');
|
||||
|
||||
await tempy.write('🦄');
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/2f3d094aec2cb1b93bb0f4cffce5ebd6'
|
||||
```
|
||||
*/
|
||||
write: (fileContent: string | Buffer | TypedArray | DataView | NodeJS.ReadableStream, options?: tempy.FileOptions) => Promise<string>;
|
||||
|
||||
/**
|
||||
Synchronously write data to a random temp file.
|
||||
|
||||
@example
|
||||
```
|
||||
import tempy = require('tempy');
|
||||
|
||||
tempy.writeSync('🦄');
|
||||
//=> '/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T/2f3d094aec2cb1b93bb0f4cffce5ebd6'
|
||||
```
|
||||
*/
|
||||
writeSync: (fileContent: string | Buffer | TypedArray | DataView, options?: tempy.FileOptions) => string;
|
||||
|
||||
/**
|
||||
Get the root temporary directory path.
|
||||
|
||||
For example: `/private/var/folders/3x/jf5977fn79jbglr7rk0tq4d00000gn/T`.
|
||||
*/
|
||||
readonly root: string;
|
||||
};
|
||||
|
||||
export = tempy;
|
||||
Loading…
Add table
Add a link
Reference in a new issue