mirror of
https://github.com/bilawalsidhu/gods-eye-view.git
synced 2026-11-04 18:34:02 +00:00
use bundled place boundaries and shared OpenFreeMap tiles before a guarded Nominatim fallback preserve multipart shapes, holes and cancellation, and keep pending annotations visible while ground sampling finishes across frames keep non-Latin name distinctions when selecting provider results, and retain an outline anchor only when it lies in filled geometry
131 lines
5.5 KiB
JavaScript
131 lines
5.5 KiB
JavaScript
import path from 'node:path';
|
|
import { openSkyProxy } from './aircraft/opensky.js';
|
|
import { celestrakProxy, rocketLaunchesProxy } from './space.js';
|
|
import { tomtomProxy } from './traffic.js';
|
|
import { firmsProxy } from './firms.js';
|
|
import { terrainHeightsProxy } from './terrain.js';
|
|
import { adsbdbProxy } from './aircraft/enrichment.js';
|
|
import { overpassProxy } from './overpass.js';
|
|
import { militaryInstallationsProxy } from './military-installations.js';
|
|
import { regionalBriefProxy } from './regional/briefing.js';
|
|
import { geocodeProxy, NOMINATIM_CACHE_DIR } from './regional/place.js';
|
|
import { weatherEffectsProxy } from './regional/weather-effects.js';
|
|
import { cctvProxy } from './cctv.js';
|
|
import { defaultSourceRoot } from './common/source-root.js';
|
|
import { radioBrowserProxy } from './radio.js';
|
|
import { gbfsProxy } from './gbfs.js';
|
|
import { localReceiversProxy } from './local-receivers.js';
|
|
import { transitProxy } from './transit.js';
|
|
import { adsbLolProxy } from './aircraft/adsb-lol.js';
|
|
import { aisLiveProxy } from './vessels/ais-live.js';
|
|
import { trackBackfillProxies } from './aircraft/tracks.js';
|
|
import { openAiRealtimeProxy } from './openai.js';
|
|
import { geminiLiveProxy } from './gemini.js';
|
|
import { googlePlacesContextProxy } from './places.js';
|
|
import { mapillaryProxy } from './mapillary.js';
|
|
import { keySetupEndpoint } from '../standalone/key-setup.js';
|
|
import { weatherProxy } from './weather.js';
|
|
import { firePerimetersProxy } from './firePerimeters.js';
|
|
import { gnssIntegrityProxy } from './gnssIntegrity.js';
|
|
import { ghostMapsProxy } from './ghostMaps.js';
|
|
import { cycloneProxy } from './cyclones.js';
|
|
import { windProxy } from './wind.js';
|
|
|
|
/**
|
|
* Construct the local provider plugins in their established order.
|
|
* `realtime` configures OpenAI; `gemini` explicitly opts into Gemini Live.
|
|
* `nominatimStorageDir` binds an owned absolute directory before construction;
|
|
* omission retains the durable per-source cache and policy state.
|
|
*/
|
|
function localProviderPlugins({
|
|
realtime,
|
|
gemini,
|
|
nominatimStorageDir = NOMINATIM_CACHE_DIR,
|
|
} = {}) {
|
|
if (
|
|
typeof nominatimStorageDir !== 'string' ||
|
|
!nominatimStorageDir.trim() ||
|
|
!path.isAbsolute(nominatimStorageDir)
|
|
)
|
|
throw new TypeError('nominatimStorageDir must be an absolute directory');
|
|
return [
|
|
openSkyProxy(),
|
|
celestrakProxy(),
|
|
tomtomProxy(),
|
|
firmsProxy(),
|
|
rocketLaunchesProxy(),
|
|
terrainHeightsProxy(),
|
|
adsbdbProxy(),
|
|
overpassProxy(),
|
|
militaryInstallationsProxy(),
|
|
regionalBriefProxy(),
|
|
geocodeProxy({ storageDir: nominatimStorageDir }),
|
|
weatherEffectsProxy(),
|
|
cctvProxy({ sourceRoot: defaultSourceRoot }),
|
|
radioBrowserProxy(),
|
|
gbfsProxy(),
|
|
localReceiversProxy(),
|
|
transitProxy(),
|
|
adsbLolProxy(),
|
|
aisLiveProxy(),
|
|
trackBackfillProxies(),
|
|
openAiRealtimeProxy({ realtime }),
|
|
...(gemini ? [geminiLiveProxy({ realtime: gemini })] : []),
|
|
googlePlacesContextProxy(),
|
|
windProxy(),
|
|
weatherProxy(),
|
|
cycloneProxy(),
|
|
mapillaryProxy(),
|
|
firePerimetersProxy(),
|
|
gnssIntegrityProxy(),
|
|
ghostMapsProxy(),
|
|
keySetupEndpoint(),
|
|
];
|
|
}
|
|
|
|
export { localProviderPlugins };
|
|
|
|
export {
|
|
CCTV_FRAME_FETCH_TIMEOUT_MS,
|
|
fetchCctvImageFromUpstream,
|
|
} from './cctv.js';
|
|
export {
|
|
createRadioProxyMiddleware,
|
|
isPublicRadioAddress,
|
|
normalizeRadioBrowserStation,
|
|
publicRadioStation,
|
|
publicRadioHttpsUrl,
|
|
} from './radio.js';
|
|
export { LL2_CACHE_TTL_MS, launchLibraryRequestHeaders } from './space.js';
|
|
export { googlePlacesContextProxy } from './places.js';
|
|
export { googleServerApiKey } from './places.js';
|
|
export { keylessGooglePlacesResponse } from './places.js';
|
|
export { keylessGoogleGeocodeResponse } from './places.js';
|
|
export { validateGeocodeAddress } from './places.js';
|
|
export { geocodeBounds } from './places.js';
|
|
export { adsbLolFallbackAnchor } from './aircraft/opensky.js';
|
|
export { readResponseTextCapped } from './common/http.js';
|
|
export { readResponseJsonCapped } from './common/http.js';
|
|
export { coalesceProxyRequest } from './common/http.js';
|
|
export { requiredFiniteQueryNumber } from './common/query.js';
|
|
export { isOverpassBoundaryQuery } from './overpass/query.js';
|
|
export { simplifyOverpassPayloadBody } from './overpass/geometry.js';
|
|
export { readOverpassDisk } from './overpass/cache.js';
|
|
export { resolveOverpassPreflight } from './overpass/cache.js';
|
|
export { overpassPayloadIsData } from './overpass/transport.js';
|
|
export { fetchOverpassPayload } from './overpass/transport.js';
|
|
export { openAiRealtimeProxy } from './openai.js';
|
|
export { MILITARY_INSTALLATION_ELEMENT_CAP } from './military-installations/constants.js';
|
|
export { quantizeMilitaryInstallationBox } from './military-installations/query.js';
|
|
export { militaryInstallationCacheKey } from './military-installations/query.js';
|
|
export { resolveMilitaryInstallationTier } from './military-installations/cache.js';
|
|
export { migrateMilitaryInstallationEntry } from './military-installations/cache.js';
|
|
export { militaryInstallationDiskFresh } from './military-installations/cache.js';
|
|
export { militaryInstallationDiskPath } from './military-installations/cache.js';
|
|
export { readMilitaryInstallationDisk } from './military-installations/cache.js';
|
|
export { writeMilitaryInstallationDisk } from './military-installations/cache.js';
|
|
export { validMilitaryInstallationBox } from './military-installations/query.js';
|
|
export { militaryInstallationFailureReason } from './military-installations/query.js';
|
|
export { validRegionalPoint } from './regional/query.js';
|
|
export { regionalBriefHasAnySource } from './regional/briefing.js';
|