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
158
pwa/node_modules/vitest/dist/config.cjs
generated
vendored
Normal file
158
pwa/node_modules/vitest/dist/config.cjs
generated
vendored
Normal file
|
|
@ -0,0 +1,158 @@
|
|||
'use strict';
|
||||
|
||||
var os = require('node:os');
|
||||
var stdEnv = require('std-env');
|
||||
var vite = require('vite');
|
||||
|
||||
const defaultBrowserPort = 63315;
|
||||
const extraInlineDeps = [
|
||||
/^(?!.*node_modules).*\.mjs$/,
|
||||
/^(?!.*node_modules).*\.cjs\.js$/,
|
||||
// Vite client
|
||||
/vite\w*\/dist\/client\/env.mjs/
|
||||
];
|
||||
|
||||
const isNode = typeof process < "u" && typeof process.stdout < "u" && !process.versions?.deno && !globalThis.window;
|
||||
const isDeno = typeof process < "u" && typeof process.stdout < "u" && process.versions?.deno !== void 0;
|
||||
(isNode || isDeno) && process.platform === "win32";
|
||||
|
||||
const defaultInclude = ["**/*.{test,spec}.?(c|m)[jt]s?(x)"];
|
||||
const defaultExclude = [
|
||||
"**/node_modules/**",
|
||||
"**/dist/**",
|
||||
"**/cypress/**",
|
||||
"**/.{idea,git,cache,output,temp}/**",
|
||||
"**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*"
|
||||
];
|
||||
const defaultCoverageExcludes = [
|
||||
"coverage/**",
|
||||
"dist/**",
|
||||
"**/node_modules/**",
|
||||
"**/[.]**",
|
||||
"packages/*/test?(s)/**",
|
||||
"**/*.d.ts",
|
||||
"**/virtual:*",
|
||||
"**/__x00__*",
|
||||
"**/\0*",
|
||||
"cypress/**",
|
||||
"test?(s)/**",
|
||||
"test?(-*).?(c|m)[jt]s?(x)",
|
||||
"**/*{.,-}{test,spec,bench,benchmark}?(-d).?(c|m)[jt]s?(x)",
|
||||
"**/__tests__/**",
|
||||
"**/{karma,rollup,webpack,vite,vitest,jest,ava,babel,nyc,cypress,tsup,build,eslint,prettier}.config.*",
|
||||
"**/vitest.{workspace,projects}.[jt]s?(on)",
|
||||
"**/.{eslint,mocha,prettier}rc.{?(c|m)js,yml}"
|
||||
];
|
||||
const coverageConfigDefaults = {
|
||||
provider: "v8",
|
||||
enabled: false,
|
||||
all: true,
|
||||
clean: true,
|
||||
cleanOnRerun: true,
|
||||
reportsDirectory: "./coverage",
|
||||
exclude: defaultCoverageExcludes,
|
||||
reportOnFailure: false,
|
||||
reporter: [
|
||||
["text", {}],
|
||||
["html", {}],
|
||||
["clover", {}],
|
||||
["json", {}]
|
||||
],
|
||||
extension: [
|
||||
".js",
|
||||
".cjs",
|
||||
".mjs",
|
||||
".ts",
|
||||
".mts",
|
||||
".tsx",
|
||||
".jsx",
|
||||
".vue",
|
||||
".svelte",
|
||||
".marko",
|
||||
".astro"
|
||||
],
|
||||
allowExternal: false,
|
||||
excludeAfterRemap: false,
|
||||
ignoreEmptyLines: true,
|
||||
processingConcurrency: Math.min(
|
||||
20,
|
||||
os.availableParallelism?.() ?? os.cpus().length
|
||||
)
|
||||
};
|
||||
const fakeTimersDefaults = {
|
||||
loopLimit: 1e4,
|
||||
shouldClearNativeTimers: true,
|
||||
toFake: [
|
||||
"setTimeout",
|
||||
"clearTimeout",
|
||||
"setInterval",
|
||||
"clearInterval",
|
||||
"setImmediate",
|
||||
"clearImmediate",
|
||||
"Date"
|
||||
]
|
||||
};
|
||||
const config = {
|
||||
allowOnly: !stdEnv.isCI,
|
||||
isolate: true,
|
||||
watch: !stdEnv.isCI,
|
||||
globals: false,
|
||||
environment: "node",
|
||||
pool: "forks",
|
||||
clearMocks: false,
|
||||
restoreMocks: false,
|
||||
mockReset: false,
|
||||
unstubGlobals: false,
|
||||
unstubEnvs: false,
|
||||
include: defaultInclude,
|
||||
exclude: defaultExclude,
|
||||
teardownTimeout: 1e4,
|
||||
forceRerunTriggers: ["**/package.json/**", "**/{vitest,vite}.config.*/**"],
|
||||
update: false,
|
||||
reporters: [],
|
||||
silent: false,
|
||||
hideSkippedTests: false,
|
||||
api: false,
|
||||
ui: false,
|
||||
uiBase: "/__vitest__/",
|
||||
open: !stdEnv.isCI,
|
||||
css: {
|
||||
include: []
|
||||
},
|
||||
coverage: coverageConfigDefaults,
|
||||
fakeTimers: fakeTimersDefaults,
|
||||
maxConcurrency: 5,
|
||||
dangerouslyIgnoreUnhandledErrors: false,
|
||||
typecheck: {
|
||||
checker: "tsc",
|
||||
include: ["**/*.{test,spec}-d.?(c|m)[jt]s?(x)"],
|
||||
exclude: defaultExclude
|
||||
},
|
||||
slowTestThreshold: 300,
|
||||
disableConsoleIntercept: false
|
||||
};
|
||||
const configDefaults = Object.freeze(config);
|
||||
|
||||
function defineConfig(config) {
|
||||
return config;
|
||||
}
|
||||
function defineProject(config) {
|
||||
return config;
|
||||
}
|
||||
function defineWorkspace(config) {
|
||||
return config;
|
||||
}
|
||||
|
||||
Object.defineProperty(exports, "mergeConfig", {
|
||||
enumerable: true,
|
||||
get: function () { return vite.mergeConfig; }
|
||||
});
|
||||
exports.configDefaults = configDefaults;
|
||||
exports.coverageConfigDefaults = coverageConfigDefaults;
|
||||
exports.defaultBrowserPort = defaultBrowserPort;
|
||||
exports.defaultExclude = defaultExclude;
|
||||
exports.defaultInclude = defaultInclude;
|
||||
exports.defineConfig = defineConfig;
|
||||
exports.defineProject = defineProject;
|
||||
exports.defineWorkspace = defineWorkspace;
|
||||
exports.extraInlineDeps = extraInlineDeps;
|
||||
Loading…
Add table
Add a link
Reference in a new issue