File size: 894 Bytes
ef6e870
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
/**
 * versionStore - Frontend build version
 *
 * Reads from SvelteKit's `_app/version.json` — generated by the @vite-pwa/sveltekit
 * plugin. The version string changes on every build, so comparing it against
 * localStorage reliably detects server upgrades.
 *
 * In dev mode, falls back to `'dev'`.
 */

import { browser } from '$app/environment';
import { base } from '$app/paths';

let version = $state<string>('');

async function loadVersion() {
	if (!browser) return;

	if (import.meta.env.DEV) {
		version = 'dev';
		return;
	}

	try {
		const res = await fetch(`${base}/_app/version.json`, { cache: 'no-store' });
		if (res.ok) {
			const data = await res.json();
			version = data.version ?? '';
		}
	} catch {
		// _app/version.json missing or unreachable - leave as empty string
	}
}

loadVersion();

export const versionStore = {
	get value(): string {
		return version;
	}
};