arevdata 0.1.17 → 0.1.20

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (241) hide show
  1. package/README.md +62 -13
  2. package/dist/arevdata.cjs +36148 -1686
  3. package/dist/arevdata.cjs.map +1 -1
  4. package/dist/arevdata.js +36148 -1686
  5. package/dist/arevdata.js.map +1 -1
  6. package/dist/types/__tests__/addressFormats.test.d.ts +1 -0
  7. package/dist/types/__tests__/astronomy.test.d.ts +1 -0
  8. package/dist/types/__tests__/timezones.test.d.ts +1 -0
  9. package/dist/types/api/access.d.ts +5 -0
  10. package/dist/types/api/env.d.ts +30 -0
  11. package/dist/types/api/index.d.ts +3 -2
  12. package/dist/types/api/router.d.ts +2 -1
  13. package/dist/types/api/routes/access.d.ts +4 -0
  14. package/dist/types/api/routes/addressFormats.d.ts +2 -0
  15. package/dist/types/api/routes/astronomy.d.ts +1 -0
  16. package/dist/types/api/routes/timezones.d.ts +1 -0
  17. package/dist/types/data/addressFormats.d.ts +10 -0
  18. package/dist/types/data/astronomy.d.ts +6 -0
  19. package/dist/types/data/states.d.ts +2 -2
  20. package/dist/types/data/timezones.d.ts +32 -0
  21. package/dist/types/data/timezones.data.d.ts +21 -0
  22. package/dist/types/index.d.ts +4 -1
  23. package/dist/types/types/index.d.ts +174 -2
  24. package/package.json +5 -4
  25. package/dist/assets/flags/LICENSE.flag-icons.txt +0 -21
  26. package/dist/assets/flags/README.md +0 -11
  27. package/dist/assets/flags/index.html +0 -88
  28. package/dist/assets/flags/overrides/xn.svg +0 -6
  29. package/dist/assets/flags/svg/ad.svg +0 -150
  30. package/dist/assets/flags/svg/ae.svg +0 -6
  31. package/dist/assets/flags/svg/af.svg +0 -81
  32. package/dist/assets/flags/svg/ag.svg +0 -14
  33. package/dist/assets/flags/svg/al.svg +0 -5
  34. package/dist/assets/flags/svg/am.svg +0 -5
  35. package/dist/assets/flags/svg/ao.svg +0 -13
  36. package/dist/assets/flags/svg/ar.svg +0 -32
  37. package/dist/assets/flags/svg/at.svg +0 -4
  38. package/dist/assets/flags/svg/au.svg +0 -8
  39. package/dist/assets/flags/svg/az.svg +0 -8
  40. package/dist/assets/flags/svg/ba.svg +0 -12
  41. package/dist/assets/flags/svg/bb.svg +0 -6
  42. package/dist/assets/flags/svg/bd.svg +0 -4
  43. package/dist/assets/flags/svg/be.svg +0 -7
  44. package/dist/assets/flags/svg/bf.svg +0 -7
  45. package/dist/assets/flags/svg/bg.svg +0 -5
  46. package/dist/assets/flags/svg/bh.svg +0 -4
  47. package/dist/assets/flags/svg/bi.svg +0 -15
  48. package/dist/assets/flags/svg/bj.svg +0 -14
  49. package/dist/assets/flags/svg/bn.svg +0 -36
  50. package/dist/assets/flags/svg/bo.svg +0 -673
  51. package/dist/assets/flags/svg/br.svg +0 -45
  52. package/dist/assets/flags/svg/bs.svg +0 -13
  53. package/dist/assets/flags/svg/bt.svg +0 -89
  54. package/dist/assets/flags/svg/bw.svg +0 -7
  55. package/dist/assets/flags/svg/by.svg +0 -18
  56. package/dist/assets/flags/svg/bz.svg +0 -145
  57. package/dist/assets/flags/svg/ca.svg +0 -4
  58. package/dist/assets/flags/svg/cd.svg +0 -5
  59. package/dist/assets/flags/svg/cf.svg +0 -15
  60. package/dist/assets/flags/svg/cg.svg +0 -12
  61. package/dist/assets/flags/svg/ch.svg +0 -9
  62. package/dist/assets/flags/svg/cl.svg +0 -13
  63. package/dist/assets/flags/svg/cm.svg +0 -15
  64. package/dist/assets/flags/svg/cn.svg +0 -11
  65. package/dist/assets/flags/svg/co.svg +0 -7
  66. package/dist/assets/flags/svg/cr.svg +0 -7
  67. package/dist/assets/flags/svg/cu.svg +0 -13
  68. package/dist/assets/flags/svg/cv.svg +0 -13
  69. package/dist/assets/flags/svg/cy.svg +0 -6
  70. package/dist/assets/flags/svg/cz.svg +0 -5
  71. package/dist/assets/flags/svg/de.svg +0 -5
  72. package/dist/assets/flags/svg/dj.svg +0 -13
  73. package/dist/assets/flags/svg/dk.svg +0 -5
  74. package/dist/assets/flags/svg/dm.svg +0 -152
  75. package/dist/assets/flags/svg/do.svg +0 -121
  76. package/dist/assets/flags/svg/dz.svg +0 -5
  77. package/dist/assets/flags/svg/ec.svg +0 -138
  78. package/dist/assets/flags/svg/ee.svg +0 -5
  79. package/dist/assets/flags/svg/eg.svg +0 -38
  80. package/dist/assets/flags/svg/er.svg +0 -8
  81. package/dist/assets/flags/svg/es.svg +0 -544
  82. package/dist/assets/flags/svg/et.svg +0 -14
  83. package/dist/assets/flags/svg/fi.svg +0 -5
  84. package/dist/assets/flags/svg/fj.svg +0 -120
  85. package/dist/assets/flags/svg/fm.svg +0 -11
  86. package/dist/assets/flags/svg/fr.svg +0 -5
  87. package/dist/assets/flags/svg/ga.svg +0 -7
  88. package/dist/assets/flags/svg/gb.svg +0 -7
  89. package/dist/assets/flags/svg/gd.svg +0 -27
  90. package/dist/assets/flags/svg/ge.svg +0 -6
  91. package/dist/assets/flags/svg/gh.svg +0 -6
  92. package/dist/assets/flags/svg/gm.svg +0 -14
  93. package/dist/assets/flags/svg/gn.svg +0 -7
  94. package/dist/assets/flags/svg/gq.svg +0 -23
  95. package/dist/assets/flags/svg/gr.svg +0 -16
  96. package/dist/assets/flags/svg/gt.svg +0 -204
  97. package/dist/assets/flags/svg/gw.svg +0 -13
  98. package/dist/assets/flags/svg/gy.svg +0 -9
  99. package/dist/assets/flags/svg/hn.svg +0 -18
  100. package/dist/assets/flags/svg/hr.svg +0 -58
  101. package/dist/assets/flags/svg/ht.svg +0 -116
  102. package/dist/assets/flags/svg/hu.svg +0 -7
  103. package/dist/assets/flags/svg/id.svg +0 -4
  104. package/dist/assets/flags/svg/ie.svg +0 -7
  105. package/dist/assets/flags/svg/il.svg +0 -14
  106. package/dist/assets/flags/svg/in.svg +0 -25
  107. package/dist/assets/flags/svg/iq.svg +0 -10
  108. package/dist/assets/flags/svg/ir.svg +0 -219
  109. package/dist/assets/flags/svg/is.svg +0 -12
  110. package/dist/assets/flags/svg/it.svg +0 -7
  111. package/dist/assets/flags/svg/jm.svg +0 -8
  112. package/dist/assets/flags/svg/jo.svg +0 -16
  113. package/dist/assets/flags/svg/jp.svg +0 -11
  114. package/dist/assets/flags/svg/ke.svg +0 -23
  115. package/dist/assets/flags/svg/kg.svg +0 -4
  116. package/dist/assets/flags/svg/kh.svg +0 -61
  117. package/dist/assets/flags/svg/ki.svg +0 -36
  118. package/dist/assets/flags/svg/km.svg +0 -16
  119. package/dist/assets/flags/svg/kn.svg +0 -14
  120. package/dist/assets/flags/svg/kp.svg +0 -15
  121. package/dist/assets/flags/svg/kr.svg +0 -24
  122. package/dist/assets/flags/svg/kw.svg +0 -13
  123. package/dist/assets/flags/svg/kz.svg +0 -36
  124. package/dist/assets/flags/svg/la.svg +0 -12
  125. package/dist/assets/flags/svg/lb.svg +0 -15
  126. package/dist/assets/flags/svg/lc.svg +0 -8
  127. package/dist/assets/flags/svg/li.svg +0 -43
  128. package/dist/assets/flags/svg/lk.svg +0 -22
  129. package/dist/assets/flags/svg/lr.svg +0 -14
  130. package/dist/assets/flags/svg/ls.svg +0 -8
  131. package/dist/assets/flags/svg/lt.svg +0 -7
  132. package/dist/assets/flags/svg/lu.svg +0 -5
  133. package/dist/assets/flags/svg/lv.svg +0 -6
  134. package/dist/assets/flags/svg/ly.svg +0 -13
  135. package/dist/assets/flags/svg/ma.svg +0 -4
  136. package/dist/assets/flags/svg/mc.svg +0 -6
  137. package/dist/assets/flags/svg/md.svg +0 -70
  138. package/dist/assets/flags/svg/me.svg +0 -116
  139. package/dist/assets/flags/svg/mg.svg +0 -7
  140. package/dist/assets/flags/svg/mh.svg +0 -7
  141. package/dist/assets/flags/svg/mk.svg +0 -5
  142. package/dist/assets/flags/svg/ml.svg +0 -7
  143. package/dist/assets/flags/svg/mm.svg +0 -12
  144. package/dist/assets/flags/svg/mn.svg +0 -14
  145. package/dist/assets/flags/svg/mr.svg +0 -6
  146. package/dist/assets/flags/svg/mt.svg +0 -58
  147. package/dist/assets/flags/svg/mu.svg +0 -8
  148. package/dist/assets/flags/svg/mv.svg +0 -6
  149. package/dist/assets/flags/svg/mw.svg +0 -10
  150. package/dist/assets/flags/svg/mx.svg +0 -382
  151. package/dist/assets/flags/svg/my.svg +0 -26
  152. package/dist/assets/flags/svg/mz.svg +0 -21
  153. package/dist/assets/flags/svg/na.svg +0 -16
  154. package/dist/assets/flags/svg/ne.svg +0 -6
  155. package/dist/assets/flags/svg/ng.svg +0 -6
  156. package/dist/assets/flags/svg/ni.svg +0 -129
  157. package/dist/assets/flags/svg/nl.svg +0 -5
  158. package/dist/assets/flags/svg/no.svg +0 -7
  159. package/dist/assets/flags/svg/np.svg +0 -13
  160. package/dist/assets/flags/svg/nr.svg +0 -12
  161. package/dist/assets/flags/svg/nz.svg +0 -36
  162. package/dist/assets/flags/svg/om.svg +0 -115
  163. package/dist/assets/flags/svg/pa.svg +0 -14
  164. package/dist/assets/flags/svg/pe.svg +0 -4
  165. package/dist/assets/flags/svg/pg.svg +0 -9
  166. package/dist/assets/flags/svg/ph.svg +0 -6
  167. package/dist/assets/flags/svg/pk.svg +0 -15
  168. package/dist/assets/flags/svg/pl.svg +0 -6
  169. package/dist/assets/flags/svg/ps.svg +0 -6
  170. package/dist/assets/flags/svg/pt.svg +0 -57
  171. package/dist/assets/flags/svg/pw.svg +0 -11
  172. package/dist/assets/flags/svg/py.svg +0 -157
  173. package/dist/assets/flags/svg/qa.svg +0 -4
  174. package/dist/assets/flags/svg/ro.svg +0 -7
  175. package/dist/assets/flags/svg/rs.svg +0 -292
  176. package/dist/assets/flags/svg/ru.svg +0 -5
  177. package/dist/assets/flags/svg/rw.svg +0 -13
  178. package/dist/assets/flags/svg/sa.svg +0 -25
  179. package/dist/assets/flags/svg/sb.svg +0 -13
  180. package/dist/assets/flags/svg/sc.svg +0 -7
  181. package/dist/assets/flags/svg/sd.svg +0 -13
  182. package/dist/assets/flags/svg/se.svg +0 -4
  183. package/dist/assets/flags/svg/sg.svg +0 -13
  184. package/dist/assets/flags/svg/si.svg +0 -18
  185. package/dist/assets/flags/svg/sk.svg +0 -9
  186. package/dist/assets/flags/svg/sl.svg +0 -7
  187. package/dist/assets/flags/svg/sm.svg +0 -75
  188. package/dist/assets/flags/svg/sn.svg +0 -8
  189. package/dist/assets/flags/svg/so.svg +0 -11
  190. package/dist/assets/flags/svg/sr.svg +0 -6
  191. package/dist/assets/flags/svg/ss.svg +0 -8
  192. package/dist/assets/flags/svg/st.svg +0 -16
  193. package/dist/assets/flags/svg/sv.svg +0 -593
  194. package/dist/assets/flags/svg/sy.svg +0 -6
  195. package/dist/assets/flags/svg/sz.svg +0 -34
  196. package/dist/assets/flags/svg/td.svg +0 -7
  197. package/dist/assets/flags/svg/tg.svg +0 -14
  198. package/dist/assets/flags/svg/th.svg +0 -7
  199. package/dist/assets/flags/svg/tj.svg +0 -22
  200. package/dist/assets/flags/svg/tl.svg +0 -13
  201. package/dist/assets/flags/svg/tm.svg +0 -204
  202. package/dist/assets/flags/svg/tn.svg +0 -4
  203. package/dist/assets/flags/svg/to.svg +0 -10
  204. package/dist/assets/flags/svg/tr.svg +0 -8
  205. package/dist/assets/flags/svg/tt.svg +0 -5
  206. package/dist/assets/flags/svg/tv.svg +0 -9
  207. package/dist/assets/flags/svg/tw.svg +0 -34
  208. package/dist/assets/flags/svg/tz.svg +0 -13
  209. package/dist/assets/flags/svg/ua.svg +0 -6
  210. package/dist/assets/flags/svg/ug.svg +0 -30
  211. package/dist/assets/flags/svg/us.svg +0 -9
  212. package/dist/assets/flags/svg/uy.svg +0 -28
  213. package/dist/assets/flags/svg/uz.svg +0 -30
  214. package/dist/assets/flags/svg/va.svg +0 -190
  215. package/dist/assets/flags/svg/vc.svg +0 -8
  216. package/dist/assets/flags/svg/ve.svg +0 -26
  217. package/dist/assets/flags/svg/vn.svg +0 -11
  218. package/dist/assets/flags/svg/vu.svg +0 -21
  219. package/dist/assets/flags/svg/ws.svg +0 -7
  220. package/dist/assets/flags/svg/xk.svg +0 -5
  221. package/dist/assets/flags/svg/xn.svg +0 -6
  222. package/dist/assets/flags/svg/ye.svg +0 -7
  223. package/dist/assets/flags/svg/za.svg +0 -17
  224. package/dist/assets/flags/svg/zm.svg +0 -27
  225. package/dist/assets/flags/svg/zw.svg +0 -21
  226. package/dist/data/languages/index.html +0 -86
  227. package/dist/docs/api-worker-plan/index.html +0 -439
  228. package/dist/docs/cities/index.html +0 -193
  229. package/dist/docs/continents-currencies/index.html +0 -306
  230. package/dist/docs/countries/index.html +0 -274
  231. package/dist/docs/country-maps/index.html +0 -262
  232. package/dist/docs/flags/index.html +0 -300
  233. package/dist/docs/geography/index.html +0 -454
  234. package/dist/docs/languages/index.html +0 -304
  235. package/dist/docs/phone-codes/index.html +0 -152
  236. package/dist/docs/states/index.html +0 -334
  237. package/dist/docs/world-map/index.html +0 -345
  238. package/dist/examples/vue-app/index.html +0 -208
  239. package/dist/index.html +0 -784
  240. package/dist/robots.txt +0 -2
  241. package/dist/style/app.css +0 -1
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1 @@
1
+ export {};
@@ -0,0 +1,5 @@
1
+ import type { ApiEnv } from "./env.js";
2
+ export declare function applyAccessControl(request: Request, env: ApiEnv | undefined): Promise<Response | null>;
3
+ export declare function createApiKeySignup(request: Request, env: ApiEnv | undefined): Promise<Response>;
4
+ export declare function verifyApiKeySignup(request: Request, env: ApiEnv | undefined): Promise<Response>;
5
+ export declare function requestApiKeyUpgrade(request: Request, env: ApiEnv | undefined): Promise<Response>;
@@ -0,0 +1,30 @@
1
+ export interface RateLimitResult {
2
+ success: boolean;
3
+ }
4
+ export interface RateLimitBinding {
5
+ limit(options: {
6
+ key: string;
7
+ }): Promise<RateLimitResult>;
8
+ }
9
+ export interface D1Statement {
10
+ bind(...values: unknown[]): D1Statement;
11
+ first<T = Record<string, unknown>>(): Promise<T | null>;
12
+ run(): Promise<unknown>;
13
+ }
14
+ export interface D1DatabaseBinding {
15
+ prepare(query: string): D1Statement;
16
+ }
17
+ export interface ApiEnv {
18
+ API_ACCESS_DB?: D1DatabaseBinding;
19
+ ANON_API_RATE_LIMITER?: RateLimitBinding;
20
+ ANON_MAPS_RATE_LIMITER?: RateLimitBinding;
21
+ API_KEY_API_RATE_LIMITER?: RateLimitBinding;
22
+ API_KEY_MAPS_RATE_LIMITER?: RateLimitBinding;
23
+ SIGNUP_RATE_LIMITER?: RateLimitBinding;
24
+ RESEND_API_KEY?: string;
25
+ ACCESS_EMAIL_FROM?: string;
26
+ ACCESS_EMAIL_REPLY_TO?: string;
27
+ ACCESS_EMAIL_ADMIN_TO?: string;
28
+ PUBLIC_API_ORIGIN?: string;
29
+ ADMIN_ACCESS_TOKEN?: string;
30
+ }
@@ -1,5 +1,6 @@
1
- export declare function handleApiRequest(request: Request): Promise<Response>;
1
+ import type { ApiEnv } from "./env.js";
2
+ export declare function handleApiRequest(request: Request, env?: ApiEnv): Promise<Response>;
2
3
  declare const worker: {
3
- fetch(request: Request): Promise<Response>;
4
+ fetch(request: Request, env: ApiEnv): Promise<Response>;
4
5
  };
5
6
  export default worker;
@@ -1 +1,2 @@
1
- export declare function routeRequest(request: Request): Promise<Response>;
1
+ import type { ApiEnv } from "./env.js";
2
+ export declare function routeRequest(request: Request, env?: ApiEnv): Promise<Response>;
@@ -0,0 +1,4 @@
1
+ import type { ApiEnv } from "../env.js";
2
+ export declare function handleAccessSignup(request: Request, env: ApiEnv | undefined): Promise<Response>;
3
+ export declare function handleAccessVerify(request: Request, env: ApiEnv | undefined): Promise<Response>;
4
+ export declare function handleAccessUpgradeRequest(request: Request, env: ApiEnv | undefined): Promise<Response>;
@@ -0,0 +1,2 @@
1
+ export declare function handleAddressFormatsCollection(): Response;
2
+ export declare function handleAddressFormatDetails(alpha2: string): Response;
@@ -0,0 +1 @@
1
+ export declare function handleAstronomyRoute(request: Request): Response;
@@ -0,0 +1 @@
1
+ export declare function handleTimezonesCollection(request: Request): Response;
@@ -0,0 +1,10 @@
1
+ import type { AddressInput, CountryAddressFormat, FormatAddressOptions } from "../types/index.js";
2
+ export declare const addressFormats: CountryAddressFormat[];
3
+ /**
4
+ * Look up normalized address-format metadata for a country.
5
+ */
6
+ export declare function getAddressFormatByCountry(alpha2: string): CountryAddressFormat | undefined;
7
+ /**
8
+ * Format an address using the selected country's postal template.
9
+ */
10
+ export declare function formatAddress(address: AddressInput, countryCode: string, options?: FormatAddressOptions): string | undefined;
@@ -0,0 +1,6 @@
1
+ import type { MoonPhase, MoonPhaseSnapshot, SeasonHemisphere, SeasonInfo } from "../types/index.js";
2
+ export declare const moonPhases: MoonPhase[];
3
+ export declare function getMoonPhaseFraction(input?: Date | string | number): number;
4
+ export declare function getMoonIllumination(input?: Date | string | number): number;
5
+ export declare function getMoonPhase(input?: Date | string | number): MoonPhaseSnapshot;
6
+ export declare function getSeason(input?: Date | string | number, hemisphere?: SeasonHemisphere): SeasonInfo;
@@ -1,7 +1,7 @@
1
1
  import type { State } from "../types/index.js";
2
2
  /**
3
- * Administrative divisions (states, provinces, territories, regions)
4
- * for major countries around the world.
3
+ * Administrative divisions backed by ISO 3166-2 subdivision data.
4
+ * Includes custom entries for the repo's non-standard XK and XN country codes.
5
5
  */
6
6
  export declare const states: State[];
7
7
  /**
@@ -0,0 +1,32 @@
1
+ import type { Timezone, TimezoneTerritory } from "../types/index.js";
2
+ export declare const timezones: Timezone[];
3
+ /**
4
+ * Resolve a timezone by its IANA identifier.
5
+ */
6
+ export declare function getTimezoneByName(name: string): Timezone | undefined;
7
+ /**
8
+ * Get all timezones that overlap a specific ISO 3166-1 alpha-2 country or territory code.
9
+ */
10
+ export declare function getTimezonesByCountry(code: string): Timezone[];
11
+ /**
12
+ * Get the primary timezone entry for a country or territory.
13
+ * When a territory has multiple zones, this returns the first entry from IANA's ordering.
14
+ */
15
+ export declare function getPrimaryTimezoneByCountry(code: string): Timezone | undefined;
16
+ /**
17
+ * Get all territories that overlap a timezone.
18
+ */
19
+ export declare function getTerritoriesByTimezone(name: string): TimezoneTerritory[];
20
+ /**
21
+ * Alias for getTerritoriesByTimezone for country-centric use cases.
22
+ */
23
+ export declare function getCountriesByTimezone(name: string): TimezoneTerritory[];
24
+ /**
25
+ * Get all mappable country or territory codes for a timezone.
26
+ * These can be passed directly to the SVG world-map helpers.
27
+ */
28
+ export declare function getMappableCountryCodesByTimezone(name: string): string[];
29
+ /**
30
+ * Search timezones by IANA name, display label, territory code/name, or comment text.
31
+ */
32
+ export declare function searchTimezones(query: string): Timezone[];
@@ -0,0 +1,21 @@
1
+ /**
2
+ * Timezone reference data derived from the IANA Time Zone Database (tzdata2026a).
3
+ *
4
+ * Sources:
5
+ * - https://data.iana.org/time-zones/releases/tzdata2026a.tar.gz
6
+ * - zone1970.tab
7
+ * - iso3166.tab
8
+ */
9
+ export interface RawTimezoneRecord {
10
+ name: string;
11
+ region: string;
12
+ subregions: string[];
13
+ location: string;
14
+ displayName: string;
15
+ countryCodes: string[];
16
+ latitude: number;
17
+ longitude: number;
18
+ comment?: string;
19
+ }
20
+ export declare const timezoneTerritoryNames: Record<string, string>;
21
+ export declare const rawTimezones: RawTimezoneRecord[];
@@ -15,12 +15,14 @@
15
15
  * }));
16
16
  * ```
17
17
  */
18
- export type { Country, Language, LanguageNameLocale, LanguageOfficialCountry, LanguageOfficialStatus, LanguageType, PhoneCountryCode, City, State, StateType, Continent, ContinentName, Currency, CountryGeography, CountryBounds, ClimateZone, FlagInfo, FlagColor, CardinalDirection, WorldMapCountry, WorldMapOptions, WorldMapHighlight, ReligionBreakdown, EthnicGroup, CountryDemographics, CountryMapOptions, } from "./types/index.js";
18
+ export type { AddressField, AddressPostalCodeType, AddressAdministrativeAreaType, AddressLocalityType, AddressDependentLocalityType, CountryAddressFormat, AddressInput, FormatAddressOptions, Country, Language, LanguageNameLocale, LanguageOfficialCountry, LanguageOfficialStatus, LanguageType, PhoneCountryCode, Timezone, TimezoneTerritory, City, State, StateType, Continent, ContinentName, Currency, CountryGeography, CountryBounds, ClimateZone, FlagInfo, FlagColor, CardinalDirection, WorldMapCountry, WorldMapOptions, WorldMapHighlight, ReligionBreakdown, EthnicGroup, CountryDemographics, CountryMapOptions, MoonPhase, MoonPhaseName, MoonPhaseSnapshot, SeasonHemisphere, SeasonInfo, SeasonName, } from "./types/index.js";
19
19
  export type { CountryTranslation, TranslationMap, TranslationLanguage, } from "./data/translations.js";
20
20
  export { translations, getSupportedLanguages, getTranslations, translateCountry, translateCity, translateContinent, translateCurrency, translateLanguageName, } from "./data/translations.js";
21
21
  export { allLanguages, canonicalizeLanguageCode, getLanguageByCode, getLanguageName, getLanguagesBySpeakerCount, getLanguageVariants, getOfficialLanguageCountries, getOfficialLanguagesByCountry, languageCodeAliases, languageNameLocales, languageVariants, languages, officialLanguagesByCountry, searchLanguages, } from "./data/languages/index.js";
22
+ export { addressFormats, getAddressFormatByCountry, formatAddress, } from "./data/addressFormats.js";
22
23
  export { countries, getCountryByCode, getCountriesByContinent, getCountryFlag, getRecognizedCountries, } from "./data/countries.js";
23
24
  export { phoneCountryCodes, getPhoneCodeByCountry, getCountriesByPhoneCode, } from "./data/phoneCodes.js";
25
+ export { timezones, getTimezoneByName, getTimezonesByCountry, getPrimaryTimezoneByCountry, getTerritoriesByTimezone, getCountriesByTimezone, getMappableCountryCodesByTimezone, searchTimezones, } from "./data/timezones.js";
24
26
  export { cities, getCitiesByCountry, getCapitalCity, getCitiesByPopulation, searchCities, } from "./data/cities.js";
25
27
  export { states, getStatesByCountry, getStateByCode, getStatesByType, } from "./data/states.js";
26
28
  export { continents, getContinentByCode } from "./data/continents.js";
@@ -31,3 +33,4 @@ export { haversineDistance, bearing, bearingToCardinal, getDistanceBetweenCountr
31
33
  export type { GeoHint, Hemisphere } from "./utils/geo.js";
32
34
  export { WORLD_MAP_VIEWBOX, WORLD_MAP_DEFAULTS, worldMapCountries, getCountryMapData, searchWorldMapCountries, getWorldMapSvg, highlightCountries, colorizeWorldMap, } from "./data/worldMap.js";
33
35
  export { COUNTRY_MAP_DEFAULTS, latLonToMapPoint, getCountrySvg, getCountrySubdivisionMapUrl, } from "./data/countryMaps.js";
36
+ export { moonPhases, getMoonPhase, getMoonPhaseFraction, getMoonIllumination, getSeason, } from "./data/astronomy.js";
@@ -105,6 +105,131 @@ export interface PhoneCountryCode {
105
105
  /** Example number format (without country code) */
106
106
  example?: string;
107
107
  }
108
+ /**
109
+ * Semantic fields used in postal address templates.
110
+ */
111
+ export type AddressField = "recipient" | "organization" | "streetAddress" | "dependentLocality" | "locality" | "administrativeArea" | "postalCode" | "sortingCode";
112
+ /**
113
+ * Country-specific label variant for postal codes.
114
+ */
115
+ export type AddressPostalCodeType = "postal" | "zip" | "pin" | "eircode";
116
+ /**
117
+ * Country-specific label variant for the administrative-area field.
118
+ */
119
+ export type AddressAdministrativeAreaType = "province" | "state" | "county" | "department" | "district" | "do_si" | "emirate" | "island" | "oblast" | "parish" | "prefecture" | "region";
120
+ /**
121
+ * Country-specific label variant for the locality field.
122
+ */
123
+ export type AddressLocalityType = "city" | "district" | "post_town" | "suburb";
124
+ /**
125
+ * Country-specific label variant for the dependent-locality field.
126
+ */
127
+ export type AddressDependentLocalityType = "district" | "neighborhood" | "suburb" | "townland";
128
+ /**
129
+ * Normalized address-format metadata for a country.
130
+ */
131
+ export interface CountryAddressFormat {
132
+ /** ISO 3166-1 alpha-2 country code */
133
+ alpha2: string;
134
+ /** Postal template using % tokens from Google's address metadata */
135
+ format: string;
136
+ /** Optional Latin-script variant of the postal template */
137
+ latinFormat?: string;
138
+ /** Fields referenced by the template, in appearance order */
139
+ usedFields: AddressField[];
140
+ /** Fields marked as required for valid postal addresses in this country */
141
+ requiredFields: AddressField[];
142
+ /** Fields that are conventionally uppercased when formatted */
143
+ uppercaseFields: AddressField[];
144
+ /** Postal-code regex pattern from the source metadata */
145
+ postalCodePattern?: string;
146
+ /** Example postal codes from the source metadata */
147
+ postalCodeExamples?: string[];
148
+ /** Optional international prefix used before the postal code */
149
+ postalCodePrefix?: string;
150
+ /** User-facing postal-code label variant */
151
+ postalCodeType: AddressPostalCodeType;
152
+ /** User-facing administrative-area label variant */
153
+ administrativeAreaType: AddressAdministrativeAreaType;
154
+ /** User-facing locality label variant */
155
+ localityType: AddressLocalityType;
156
+ /** User-facing dependent-locality label variant */
157
+ dependentLocalityType: AddressDependentLocalityType;
158
+ }
159
+ /**
160
+ * Address parts accepted by `formatAddress()`.
161
+ */
162
+ export interface AddressInput {
163
+ /** Recipient or addressee name */
164
+ recipient?: string;
165
+ /** Organization or company name */
166
+ organization?: string;
167
+ /** Street-address line(s) */
168
+ streetAddress?: string | string[];
169
+ /** Neighborhood, district, townland, or similar dependent locality */
170
+ dependentLocality?: string;
171
+ /** City, suburb, district, or post town */
172
+ locality?: string;
173
+ /** State, province, county, prefecture, or similar area */
174
+ administrativeArea?: string;
175
+ /** Postal / ZIP / PIN / Eircode */
176
+ postalCode?: string;
177
+ /** Sorting code where applicable */
178
+ sortingCode?: string;
179
+ }
180
+ /**
181
+ * Options for `formatAddress()`.
182
+ */
183
+ export interface FormatAddressOptions {
184
+ /** Prefer the Latin-script template when one exists */
185
+ latin?: boolean;
186
+ /** Apply the source metadata's uppercase rules. Defaults to true. */
187
+ uppercase?: boolean;
188
+ }
189
+ /**
190
+ * A country or territory associated with an IANA timezone.
191
+ */
192
+ export interface TimezoneTerritory {
193
+ /** ISO 3166-1 alpha-2 code */
194
+ code: string;
195
+ /** English display name */
196
+ name: string;
197
+ /** Unicode emoji flag */
198
+ flag: string;
199
+ /** Whether the territory exists in the bundled world-map dataset */
200
+ mappable: boolean;
201
+ /** Sovereign-state recognition flag when the territory exists in the core countries dataset */
202
+ recognized?: boolean;
203
+ /** Continent when the territory exists in the core countries dataset */
204
+ continent?: ContinentName;
205
+ }
206
+ /**
207
+ * IANA timezone metadata derived from zone1970.tab.
208
+ */
209
+ export interface Timezone {
210
+ /** Canonical IANA timezone identifier */
211
+ name: string;
212
+ /** Top-level region segment, e.g. "Europe" */
213
+ region: string;
214
+ /** Middle path segments between region and location */
215
+ subregions: string[];
216
+ /** Final path segment formatted for display */
217
+ location: string;
218
+ /** Human-readable label built from the path segments */
219
+ displayName: string;
220
+ /** ISO 3166-1 alpha-2 codes covered by the timezone */
221
+ countryCodes: string[];
222
+ /** Fully-enriched territory details for each code */
223
+ territories: TimezoneTerritory[];
224
+ /** Country or territory codes that can be highlighted with the bundled map dataset */
225
+ mappableCountryCodes: string[];
226
+ /** Latitude of the timezone's principal location */
227
+ latitude: number;
228
+ /** Longitude of the timezone's principal location */
229
+ longitude: number;
230
+ /** Optional IANA comment for zones where a country has multiple entries */
231
+ comment?: string;
232
+ }
108
233
  /**
109
234
  * Represents a city with geographic and demographic data.
110
235
  */
@@ -138,9 +263,9 @@ export interface State {
138
263
  type: StateType;
139
264
  }
140
265
  /**
141
- * Types of administrative divisions
266
+ * Normalized types of administrative divisions used by this dataset.
142
267
  */
143
- export type StateType = "state" | "province" | "territory" | "autonomous region" | "district" | "department" | "region" | "county" | "emirate" | "canton";
268
+ export type StateType = "state" | "province" | "territory" | "autonomous region" | "district" | "department" | "region" | "county" | "emirate" | "canton" | "municipality" | "prefecture" | "governorate" | "parish" | "city" | "division" | "atoll" | "island";
144
269
  /**
145
270
  * Continent with metadata
146
271
  */
@@ -346,3 +471,50 @@ export interface CountryMapOptions {
346
471
  /** Extra space (in SVG units) added around the country outline. Default: 5 */
347
472
  padding?: number;
348
473
  }
474
+ /**
475
+ * Named moon phases used by the astronomy helpers.
476
+ */
477
+ export type MoonPhaseName = "new-moon" | "waxing-crescent" | "first-quarter" | "waxing-gibbous" | "full-moon" | "waning-gibbous" | "last-quarter" | "waning-crescent";
478
+ /**
479
+ * Static metadata for a moon phase.
480
+ */
481
+ export interface MoonPhase {
482
+ /** Zero-based phase index in the canonical 8-phase cycle. */
483
+ index: number;
484
+ /** Stable machine-readable moon phase key. */
485
+ key: MoonPhaseName;
486
+ /** Human-readable moon phase label. */
487
+ name: string;
488
+ /** Short description of the phase. */
489
+ description: string;
490
+ }
491
+ /**
492
+ * A moon phase resolved for a specific date.
493
+ */
494
+ export interface MoonPhaseSnapshot extends MoonPhase {
495
+ /** Fraction through the synodic month, from 0 to just under 1. */
496
+ fraction: number;
497
+ /** Illuminated portion of the lunar disc, from 0 to 1. */
498
+ illumination: number;
499
+ /** Approximate age of the moon in days since new moon. */
500
+ ageDays: number;
501
+ }
502
+ /**
503
+ * Meteorological season names used for the sun helpers.
504
+ */
505
+ export type SeasonName = "spring" | "summer" | "autumn" | "winter";
506
+ /**
507
+ * Hemisphere selector for season lookups.
508
+ */
509
+ export type SeasonHemisphere = "north" | "south";
510
+ /**
511
+ * Describes the current season for a hemisphere.
512
+ */
513
+ export interface SeasonInfo {
514
+ /** Season name. */
515
+ name: SeasonName;
516
+ /** Hemisphere used for the lookup. */
517
+ hemisphere: SeasonHemisphere;
518
+ /** Human-readable label suitable for UI output. */
519
+ label: string;
520
+ }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "arevdata",
3
- "version": "0.1.17",
3
+ "version": "0.1.20",
4
4
  "description": "A comprehensive collection of reusable world data: countries, phone codes, flags, cities, states, provinces and more",
5
5
  "type": "module",
6
6
  "main": "./dist/arevdata.cjs",
@@ -23,9 +23,10 @@
23
23
  "api:deploy": "wrangler deploy --config wrangler.jsonc",
24
24
  "flags:sync": "node scripts/sync-flag-svgs.mjs",
25
25
  "flags:build": "npm run flags:sync && node scripts/build-flag-assets.mjs",
26
- "docs:dev": "cd docs && ../node_modules/.bin/girk",
27
- "docs:build": "cd docs && ../node_modules/.bin/girk",
28
- "docs:deploy": "cd docs && ../node_modules/.bin/girk && ../node_modules/.bin/wrangler pages deploy",
26
+ "docs:clean": "node -e \"require('fs').rmSync('docs/public', { recursive: true, force: true })\"",
27
+ "docs:dev": "npm run docs:clean && cd docs && ../node_modules/.bin/girk",
28
+ "docs:build": "npm run docs:clean && cd docs && ../node_modules/.bin/girk",
29
+ "docs:deploy": "npm run docs:clean && cd docs && ../node_modules/.bin/girk && ../node_modules/.bin/wrangler pages deploy",
29
30
  "prepack": "npm run build",
30
31
  "test": "vitest run",
31
32
  "test:watch": "vitest",
@@ -1,21 +0,0 @@
1
- The MIT License (MIT)
2
-
3
- Copyright (c) 2013 Panayiotis Lipiridis
4
-
5
- Permission is hereby granted, free of charge, to any person obtaining a copy of
6
- this software and associated documentation files (the "Software"), to deal in
7
- the Software without restriction, including without limitation the rights to
8
- use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies
9
- of the Software, and to permit persons to whom the Software is furnished to do
10
- so, subject to the following conditions:
11
-
12
- The above copyright notice and this permission notice shall be included in all
13
- copies or substantial portions of the Software.
14
-
15
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
- SOFTWARE.
@@ -1,11 +0,0 @@
1
- Flag SVG source-of-truth lives here.
2
-
3
- - `svg/`: repo-owned SVG flags used as the canonical input assets
4
- - `overrides/`: manual SVG overrides for codes not covered by the upstream source package
5
-
6
- Source notes:
7
-
8
- - Most SVGs are synced from the `flag-icons` package, which is MIT licensed.
9
- - `XN` is handled as a manual override because it is not included in `flag-icons`.
10
-
11
- Derived PNG assets are generated from these SVGs during the docs/assets build pipeline and are not intended to be edited manually.
@@ -1,88 +0,0 @@
1
- <!DOCTYPE html>
2
- <html lang="en">
3
- <head>
4
- <meta name="viewport" content="width=device-width, initial-scale=1">
5
- <meta name="type" content="content">
6
- <title>flags</title>
7
- <link href="/style/app.css" rel="stylesheet" type="text/css">
8
- </head>
9
- <body class="page--flags">
10
- <div class="page-container">
11
- <header class="header">
12
- <div class="header__container">
13
- </div>
14
- </header>
15
- <main class="main">
16
- <section class="section">
17
- <div class="container">
18
- <div class="content"><p>Flag SVG source-of-truth lives here.</p>
19
- <ul>
20
- <li><code>svg/</code>: repo-owned SVG flags used as the canonical input assets</li>
21
- <li><code>overrides/</code>: manual SVG overrides for codes not covered by the upstream source package</li>
22
- </ul>
23
- <p>Source notes:</p>
24
- <ul>
25
- <li>Most SVGs are synced from the <code>flag-icons</code> package, which is MIT licensed.</li>
26
- <li><code>XN</code> is handled as a manual override because it is not included in <code>flag-icons</code>.</li>
27
- </ul>
28
- <p>Derived PNG assets are generated from these SVGs during the docs/assets build pipeline and are not intended to be edited manually.</p>
29
-
30
- </div>
31
- </div>
32
- </section>
33
- </main>
34
- </div>
35
- <footer class="footer">
36
- <div class="footer__container">
37
- <div class="footer__controls">
38
- <div class="footer__control"><span class="footer__label">Theme</span>
39
- <button class="color-mode-toggle" type="button" data-color-mode-toggle aria-label="Toggle color mode"><span class="color-mode-toggle__value"></span></button>
40
- </div>
41
- </div>
42
- </div>
43
- </footer>
44
- </body>
45
- <script>const isDarkMode = window.matchMedia("prefers-color-scheme: dark").matches;
46
- let localMode = isDarkMode ? "dark" : "light";
47
-
48
- const updateColorModeToggle = () => {
49
- const toggle = document.querySelector("[data-color-mode-toggle]");
50
- if (!toggle) return;
51
-
52
- const value = toggle.querySelector(".color-mode-toggle__value");
53
- if (!value) return;
54
-
55
- value.textContent = localMode === "dark" ? "Dark" : "Light";
56
- };
57
-
58
- const initColorMode = () => {
59
- localMode = localStorage.getItem("colorMode");
60
- setCurrentMode(localMode ? localMode : isDarkMode ? "dark" : "light");
61
- };
62
-
63
- const setCurrentMode = (mode) => {
64
- localMode = mode;
65
- localStorage.setItem("colorMode", localMode);
66
- document.body.setAttribute("color-mode", mode);
67
- updateColorModeToggle();
68
- };
69
-
70
- const switchMode = () => {
71
- if (localMode == "dark") setCurrentMode("light");
72
- else setCurrentMode("dark");
73
- };
74
-
75
- const bindColorModeToggle = () => {
76
- const toggle = document.querySelector("[data-color-mode-toggle]");
77
- if (!toggle) return;
78
-
79
- toggle.addEventListener("click", () => {
80
- switchMode();
81
- });
82
- };
83
-
84
- initColorMode();
85
- bindColorModeToggle();
86
-
87
- </script>
88
- </html>
@@ -1,6 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" width="1200" height="600" viewBox="0 0 36 18">
2
- <path fill="#F2A800" d="M0 0h36v18H0z"/>
3
- <path fill="#D90012" d="M0 0h36v9H0z"/>
4
- <path fill="#0033A0" d="M0 6h21l2.2 2.2 4.5-4.5 2.3 2.3h6v6h-6l-2.3 2.3-4.5-4.5-2.2 2.2H0z"/>
5
- <path fill="#FFF" d="M36 0h-6v2h-3v2h-3v2h-3v2h-3v2h3v2h3v2h3v2h3v2h6v-2h-3v-2h-3v-2h-3v-2h-3V8h3V6h3V4h3V2h3z"/>
6
- </svg>