doxa-maps/library/data
Doxa Maps ef439a5d8e Print files: a stale cached copy of a pinned file is fetched once more, fresh
The print-time files are pinned (poster-render.js and its classic copy,
packet-strings.json, ne-places.json, india-states.json) and were fetched with
cache: 'force-cache', which returns any cached copy, however old. After a
re-pin, a reader who had printed before kept the previous copy: it failed its
pin on every print and the print fell back without a word. Page 1 became the
stored poster, a non-English packet would print in English, and India's state
cards would be lost.

sha384.js fetchPinned fetches force-cache first (fast, and offline once
cached) and, when the copy is not served or fails its pin, once more with
cache: 'reload', which skips and refreshes the HTTP cache; only that answer
decides. posterSheets (the generator and the places table), packetStrings and
indiaStates all fetch through it. The classic-script path refreshes the cache
the same way and retries a refused tag once.

check:pinned-fetch-fresh models the HTTP cache with stale copies: page 1 still
draws, the packet keeps every language, India keeps its 36 states; a matching
cached copy is used with one request; wrong bytes are refused. The previous
loaders fail it. Self-test poisons: no fresh refetch, never the cache, a
mismatch accepted, a loader fetching its pinned file directly.
2026-10-02 19:05:37 +00:00
..
countries.json Regions: one rollup, ported from theirs, instead of two copies 2026-09-24 04:01:34 +00:00
country-posters.json Re-derive country-posters.json region fields from live wagf_region 2026-10-02 08:38:11 +00:00
indiaStates.integrity.js WIP P0b: India's states and union territories table (derived from admin-membership, served as an asset, sha384-pinned in the same emitter run), its loader, the tree allowlist row, and check:india-states (not yet registered) 2026-09-30 21:17:28 +00:00
indiaStates.js Print files: a stale cached copy of a pinned file is fetched once more, fresh 2026-10-02 19:05:37 +00:00
iso-numeric-to-alpha2.json doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
iso3-name.js Country names for 13 territories with their own posters; Kosovo's label 2026-10-01 19:28:27 +00:00
iso3-to-alpha2.json Country names in the reader's language, for all 242 2026-09-27 04:14:31 +00:00
langFamilyByIso.json doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
langFamilyByLanguage.json doxa-maps — portable bundler for embeddable JAMstack maps 2026-09-10 01:53:07 +00:00
README.md docs: simplify all folder READMEs (what's here + graphic + link); migrate complex reference to docs/architecture/{data-sources,i18n,components,app-wrappers,poster-generation}.md 2026-09-11 18:50:31 +00:00

library/data/ — static lookup tables

Small JSON tables inlined into any bundle that imports them (eager JSON imports, no runtime fetch). Import as @map/data/<file>.json.

  • langFamilyByLanguage.json — language label → family ("Telugu": "Dravidian"). Derives languageFamily when the API returns null for imb_language_family. English labels only.
  • langFamilyByIso.json — ISO 639-3 code → family ("afr": "Indo-European"). Used first, because the API localizes language labels but primary_language.value (the ISO code) is stable across locales. Generated by joining langFamilyByLanguage.json onto EN API rows by ISO code; there is no regeneration script — re-run that join against a fresh EN pull if the language set changes.
  • iso-numeric-to-alpha2.json — ISO 3166-1 numeric → alpha-2 ("840": "US"). For joining numeric-keyed geodata (world-atlas TopoJSON) to alpha-2 records. No code consumers yet — kept as a ready lookup.

Consumers of the language tables: composables/useMapData.js, useDoxaSearch.js, useMapLayers.js, legends/useLanguageFamilyLegendData.js.