tauqeet-js 1.0.0 → 1.0.2

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 (90) hide show
  1. package/README.md +77 -49
  2. package/dist/astronomy/index.cjs +2 -0
  3. package/dist/astronomy/index.cjs.map +1 -0
  4. package/dist/astronomy/index.d.cts +40 -0
  5. package/dist/astronomy/index.d.ts +40 -0
  6. package/dist/astronomy/index.js +2 -0
  7. package/dist/astronomy/index.js.map +1 -0
  8. package/dist/chunk-4GEHU4EV.js +2 -0
  9. package/dist/chunk-4GEHU4EV.js.map +1 -0
  10. package/dist/chunk-4JQOEJI5.cjs +2 -0
  11. package/dist/chunk-4JQOEJI5.cjs.map +1 -0
  12. package/dist/chunk-BJ45B342.cjs +2 -0
  13. package/dist/chunk-BJ45B342.cjs.map +1 -0
  14. package/dist/chunk-CSU6AEKX.js +2 -0
  15. package/dist/chunk-CSU6AEKX.js.map +1 -0
  16. package/dist/chunk-DJ357A47.js +2 -0
  17. package/dist/chunk-DJ357A47.js.map +1 -0
  18. package/dist/chunk-E4M4MYZR.cjs +2 -0
  19. package/dist/chunk-E4M4MYZR.cjs.map +1 -0
  20. package/dist/chunk-FQ6RGT3F.cjs +2 -0
  21. package/dist/chunk-FQ6RGT3F.cjs.map +1 -0
  22. package/dist/chunk-FTWK5BZJ.js +2 -0
  23. package/dist/chunk-FTWK5BZJ.js.map +1 -0
  24. package/dist/chunk-GIWGJKCS.js +2 -0
  25. package/dist/chunk-GIWGJKCS.js.map +1 -0
  26. package/dist/chunk-H2JLMZ5E.cjs +2 -0
  27. package/dist/chunk-H2JLMZ5E.cjs.map +1 -0
  28. package/dist/chunk-H33IJIM5.cjs +2 -0
  29. package/dist/chunk-H33IJIM5.cjs.map +1 -0
  30. package/dist/chunk-IAQLPBAC.js +2 -0
  31. package/dist/chunk-IAQLPBAC.js.map +1 -0
  32. package/dist/chunk-II6TW43P.cjs +2 -0
  33. package/dist/chunk-II6TW43P.cjs.map +1 -0
  34. package/dist/chunk-IPNHW5FC.js +2 -0
  35. package/dist/chunk-IPNHW5FC.js.map +1 -0
  36. package/dist/chunk-JA4E3Q7A.js +2 -0
  37. package/dist/chunk-JA4E3Q7A.js.map +1 -0
  38. package/dist/chunk-LTEJ7X6W.js +2 -0
  39. package/dist/chunk-LTEJ7X6W.js.map +1 -0
  40. package/dist/chunk-QMMOAGSC.js +2 -0
  41. package/dist/chunk-QMMOAGSC.js.map +1 -0
  42. package/dist/chunk-WFHQSUXS.cjs +2 -0
  43. package/dist/chunk-WFHQSUXS.cjs.map +1 -0
  44. package/dist/chunk-WXX4UNDC.js +2 -0
  45. package/dist/chunk-WXX4UNDC.js.map +1 -0
  46. package/dist/chunk-XL5IKB2X.js +2 -0
  47. package/dist/chunk-XL5IKB2X.js.map +1 -0
  48. package/dist/chunk-YDSVFKVM.cjs +2 -0
  49. package/dist/chunk-YDSVFKVM.cjs.map +1 -0
  50. package/dist/chunk-YMPRSR53.cjs +2 -0
  51. package/dist/chunk-YMPRSR53.cjs.map +1 -0
  52. package/dist/chunk-YSOESZ35.cjs +2 -0
  53. package/dist/chunk-YSOESZ35.cjs.map +1 -0
  54. package/dist/chunk-YZUP33VG.cjs +2 -0
  55. package/dist/chunk-YZUP33VG.cjs.map +1 -0
  56. package/dist/index-tSYKxCru.d.cts +64 -0
  57. package/dist/index-tSYKxCru.d.ts +64 -0
  58. package/dist/index.cjs +2 -1105
  59. package/dist/index.cjs.map +1 -0
  60. package/dist/index.d.cts +13 -223
  61. package/dist/index.d.ts +13 -223
  62. package/dist/index.js +2 -1062
  63. package/dist/index.js.map +1 -0
  64. package/dist/moon/index.cjs +2 -0
  65. package/dist/moon/index.cjs.map +1 -0
  66. package/dist/moon/index.d.cts +20 -0
  67. package/dist/moon/index.d.ts +20 -0
  68. package/dist/moon/index.js +2 -0
  69. package/dist/moon/index.js.map +1 -0
  70. package/dist/prayer/index.cjs +2 -0
  71. package/dist/prayer/index.cjs.map +1 -0
  72. package/dist/prayer/index.d.cts +17 -0
  73. package/dist/prayer/index.d.ts +17 -0
  74. package/dist/prayer/index.js +2 -0
  75. package/dist/prayer/index.js.map +1 -0
  76. package/dist/qibla/index.cjs +2 -0
  77. package/dist/qibla/index.cjs.map +1 -0
  78. package/dist/qibla/index.d.cts +22 -0
  79. package/dist/qibla/index.d.ts +22 -0
  80. package/dist/qibla/index.js +2 -0
  81. package/dist/qibla/index.js.map +1 -0
  82. package/dist/ramadan-BpmCzDzM.d.ts +77 -0
  83. package/dist/ramadan-Cr6YrTTX.d.cts +77 -0
  84. package/dist/ui/index.cjs +105 -0
  85. package/dist/ui/index.cjs.map +1 -0
  86. package/dist/ui/index.d.cts +43 -0
  87. package/dist/ui/index.d.ts +43 -0
  88. package/dist/ui/index.js +105 -0
  89. package/dist/ui/index.js.map +1 -0
  90. package/package.json +6 -16
package/README.md CHANGED
@@ -1,73 +1,101 @@
1
- # 🌌 Tauqeet.js
1
+ # TauqeetJS
2
2
 
3
- **Tauqeet.js** is a high-precision, low-code JavaScript library for Islamic prayer times and astronomical ephemeris. Built on the gold-standard algorithms of **Jean Meeus**, it provides sub-second accuracy for global prayer times, solar/lunar positioning, and Qibla direction.
3
+ **TauqeetJS** is a high-performance, modular, and headless-first TypeScript library for calculating Islamic prayer times and astronomical data. Designed for professional engineers, it prioritizes precision, type safety, and minimal bundle size.
4
4
 
5
- [![NPM Version](https://img.shields.io/npm/v/tauqeet-js)](https://www.npmjs.com/package/tauqeet-js)
6
5
  [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)
6
+ ![Bundle Size](https://img.shields.io/bundlephobia/minzip/tauqeetjs)
7
7
 
8
- ## ✨ Why Tauqeet.js?
9
- In Urdu and Arabic, *Tauqeet* refers to the science of timekeeping, specifically for religious purposes. This library is designed to bring that ancient precision to the modern web with a focus on:
10
- - **Sub-Second Precision:** Uses Successive Approximation loops for perfect convergence.
11
- - **Topocentric Accuracy:** Accounts for refraction, solar semidiameter, parallax, and **Altitude (Elevation)**.
12
- - **Low-Code API:** Get results in one line of code.
13
- - **Robust:** Hardened against division-by-zero errors at poles and extreme latitudes.
8
+ ---
14
9
 
15
- ## 🚀 Quick Start (One-Liner)
10
+ ## Key Features
16
11
 
17
- ```javascript
18
- import { calculate } from 'tauqeet-js';
12
+ - **Headless-First**: Import only the logic you need. No forced UI dependencies.
13
+ - **Type-Safe**: Written in TypeScript with exhaustive definitions.
14
+ - **Robust Error Handling**: Uses the `Result<T, E>` pattern—no silent failures or unexpected exceptions.
15
+ - **Environmentally Aware**: High-precision atmospheric refraction adjustments (elevation, temperature, pressure).
16
+ - **Small Footprint**: Zero external dependencies in the core engine.
19
17
 
20
- // Get times for London (51.5, -0.1) using the Karachi method
21
- const times = calculate(51.5074, -0.1278);
18
+ ---
22
19
 
23
- console.log(times.fajr);
24
- ```
20
+ ## Quick Start
25
21
 
26
- ## 🛠️ Advanced Features
22
+ Install via your preferred package manager:
27
23
 
28
- ### 1. Elevation / Altitude Support
29
- Tauqeet.js handles the "Dip of the Horizon" based on your vertical height.
30
- ```javascript
31
- const times = calculate(31.4, 73.0, 'Karachi', 'Hanafi', new Date(), 1000); // 1000 meters elevation
24
+ ```bash
25
+ npm install tauqeet-js
26
+ # or
27
+ yarn add tauqeet-js
32
28
  ```
33
29
 
34
- ### 2. High-Level Config
35
- ```javascript
30
+ ### Basic Usage (Low-Code)
31
+
32
+ Get prayer times for a specific location using smart defaults (Karachi method, Hanafi madhab).
33
+
34
+ ```typescript
36
35
  import { getPrayerTimes } from 'tauqeet-js';
37
36
 
38
- const schedule = getPrayerTimes({
39
- location: { latitude: 31.4, longitude: 73.0, elevation: 500 },
40
- method: 'MWL',
41
- madhab: 'Hanafi',
42
- date: new Date()
37
+ const result = getPrayerTimes({
38
+ location: { latitude: 24.8607, longitude: 67.0011 }
43
39
  });
40
+
41
+ if (result.success) {
42
+ const { fajr, dhuhr, asr, maghrib, isha } = result.data;
43
+ console.log(`Fajr: ${fajr.toLocaleTimeString()}`);
44
+ } else {
45
+ console.error(`Calculation failed: ${result.error}`);
46
+ }
44
47
  ```
45
48
 
46
- ### 3. High-Precision Astronomy
47
- Access coordinates for the Sun, Moon (including phases), and Polaris.
48
- ```javascript
49
- import { AstronomyClass } from 'tauqeet-js';
49
+ ---
50
+
51
+ ## Core Concepts
52
+
53
+ ### Headless-First Architecture
50
54
 
51
- const astro = new AstronomyClass();
52
- console.log(astro.moon.illumination); // Current moon phase %
53
- console.log(astro.sun.GHA); // Sun Greenwich Hour Angle
55
+ To keep your production bundle small, TauqeetJS is designed to be imported modularly. If you only need the prayer calculation engine without Qibla or Moon logic:
56
+
57
+ ```typescript
58
+ import { getPrayerTimes } from 'tauqeetjs/prayer';
54
59
  ```
55
60
 
56
- ### 4. Qibla Direction
57
- Calculates Great Circle bearing and Distance to Makkah.
58
- ```javascript
59
- import { calculateQibla } from 'tauqeet-js';
61
+ ### The Result Pattern
62
+
63
+ Unlike libraries that throw errors or return `null`, TauqeetJS returns a `Result<T, E>` object. This ensures your application remains stable even with invalid inputs.
60
64
 
61
- const qibla = calculateQibla({ latitude: 31.4, longitude: 73.0 });
62
- console.log(qibla.bearing); // Bearing from North
63
- console.log(qibla.distance); // KM to Kaaba
65
+ ```typescript
66
+ const result = getPrayerTimes(config);
67
+
68
+ if (!result.success) {
69
+ // result.error contains a descriptive string
70
+ handleError(result.error);
71
+ } else {
72
+ // result.data is fully typed
73
+ renderUI(result.data);
74
+ }
64
75
  ```
65
76
 
66
- ## 📐 Accuracy Benchmark
67
- This library aligns with:
68
- - **Astro-Almanac HP** (Henning Umland)
69
- - **Jean Meeus** (Astronomical Algorithms)
70
- - **Islamic Standard Methods** (Karachi, MWL, ISNA, Egypt, Tehran, Jafari, Makkah)
77
+ ---
78
+
79
+ ## Advanced Configuration
80
+
81
+ Fine-tune calculations for specific environmental conditions or local preferences.
82
+
83
+ ```typescript
84
+ const config = {
85
+ location: { latitude: 24.86, longitude: 67.01, elevation: 20 },
86
+ method: 'MWL',
87
+ madhab: 'Hanafi',
88
+ temperature: 25, // Celsius
89
+ pressure: 1010, // hPa/mbar
90
+ adjustments: {
91
+ fajr: 2, // Add 2 minutes
92
+ maghrib: 1 // Add 1 minute (safety margin)
93
+ }
94
+ };
95
+ ```
96
+
97
+ ---
98
+
99
+ ## Documentation
71
100
 
72
- ## 📄 License
73
- MIT © 2026 Ghulam Hasnain.
101
+ For a full breakdown of the API, configuration options, and astronomical parameters, see [API.md](./API.md).
@@ -0,0 +1,2 @@
1
+ 'use strict';require('../chunk-WFHQSUXS.cjs');var chunkBJ45B342_cjs=require('../chunk-BJ45B342.cjs'),chunkYSOESZ35_cjs=require('../chunk-YSOESZ35.cjs'),chunkYMPRSR53_cjs=require('../chunk-YMPRSR53.cjs');require('../chunk-4JQOEJI5.cjs');Object.defineProperty(exports,"calculateMoon",{enumerable:true,get:function(){return chunkBJ45B342_cjs.a}});Object.defineProperty(exports,"getRefraction",{enumerable:true,get:function(){return chunkYSOESZ35_cjs.a}});Object.defineProperty(exports,"calculateNutation",{enumerable:true,get:function(){return chunkYMPRSR53_cjs.h}});Object.defineProperty(exports,"calculateSolar",{enumerable:true,get:function(){return chunkYMPRSR53_cjs.i}});//# sourceMappingURL=index.cjs.map
2
+ //# sourceMappingURL=index.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.cjs"}
@@ -0,0 +1,40 @@
1
+ interface SolarResult {
2
+ RA: number;
3
+ DEC: number;
4
+ GHA: number;
5
+ SHA: number;
6
+ SD: number;
7
+ HP: number;
8
+ EOT: number;
9
+ distance: number;
10
+ lambdaApp: number;
11
+ }
12
+ declare function calculateSolar(jd: number, deltaPsi: number, eps: number, TE: number, Tau: number, T: number): SolarResult;
13
+
14
+ interface MoonResult {
15
+ RA: number;
16
+ DEC: number;
17
+ GHA: number;
18
+ SHA: number;
19
+ SD: number;
20
+ HP: number;
21
+ illumination: number;
22
+ isWaxing: boolean;
23
+ distance: number;
24
+ }
25
+ declare function calculateMoon(jd: number, TE: number, deltaPsi: number, eps: number, GHAAtrue: number, sunLambda: number, sunRA: number, sunDec: number): MoonResult;
26
+
27
+ interface NutationResult {
28
+ deltaPsi: number;
29
+ deltaEps: number;
30
+ eps0: number;
31
+ eps: number;
32
+ }
33
+ declare function calculateNutation(TE: number): NutationResult;
34
+
35
+ /**
36
+ * Calculates the astronomical atmospheric refraction correction using Bennett's Formula (1982).
37
+ */
38
+ declare function getRefraction(apparentAltitudeDeg: number, temperatureC?: number, pressureMbar?: number): number;
39
+
40
+ export { calculateMoon, calculateNutation, calculateSolar, getRefraction };
@@ -0,0 +1,40 @@
1
+ interface SolarResult {
2
+ RA: number;
3
+ DEC: number;
4
+ GHA: number;
5
+ SHA: number;
6
+ SD: number;
7
+ HP: number;
8
+ EOT: number;
9
+ distance: number;
10
+ lambdaApp: number;
11
+ }
12
+ declare function calculateSolar(jd: number, deltaPsi: number, eps: number, TE: number, Tau: number, T: number): SolarResult;
13
+
14
+ interface MoonResult {
15
+ RA: number;
16
+ DEC: number;
17
+ GHA: number;
18
+ SHA: number;
19
+ SD: number;
20
+ HP: number;
21
+ illumination: number;
22
+ isWaxing: boolean;
23
+ distance: number;
24
+ }
25
+ declare function calculateMoon(jd: number, TE: number, deltaPsi: number, eps: number, GHAAtrue: number, sunLambda: number, sunRA: number, sunDec: number): MoonResult;
26
+
27
+ interface NutationResult {
28
+ deltaPsi: number;
29
+ deltaEps: number;
30
+ eps0: number;
31
+ eps: number;
32
+ }
33
+ declare function calculateNutation(TE: number): NutationResult;
34
+
35
+ /**
36
+ * Calculates the astronomical atmospheric refraction correction using Bennett's Formula (1982).
37
+ */
38
+ declare function getRefraction(apparentAltitudeDeg: number, temperatureC?: number, pressureMbar?: number): number;
39
+
40
+ export { calculateMoon, calculateNutation, calculateSolar, getRefraction };
@@ -0,0 +1,2 @@
1
+ import'../chunk-IAQLPBAC.js';export{a as calculateMoon}from'../chunk-XL5IKB2X.js';export{a as getRefraction}from'../chunk-CSU6AEKX.js';export{h as calculateNutation,i as calculateSolar}from'../chunk-FTWK5BZJ.js';import'../chunk-4GEHU4EV.js';//# sourceMappingURL=index.js.map
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"index.js"}
@@ -0,0 +1,2 @@
1
+ var f=Object.defineProperty,g=Object.defineProperties;var h=Object.getOwnPropertyDescriptors;var d=Object.getOwnPropertySymbols;var i=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var k=Math.pow,e=(c,a,b)=>a in c?f(c,a,{enumerable:true,configurable:true,writable:true,value:b}):c[a]=b,l=(c,a)=>{for(var b in a||(a={}))i.call(a,b)&&e(c,b,a[b]);if(d)for(var b of d(a))j.call(a,b)&&e(c,b,a[b]);return c},m=(c,a)=>g(c,h(a));export{k as a,l as b,m as c};//# sourceMappingURL=chunk-4GEHU4EV.js.map
2
+ //# sourceMappingURL=chunk-4GEHU4EV.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-4GEHU4EV.js"}
@@ -0,0 +1,2 @@
1
+ 'use strict';var f=Object.defineProperty,g=Object.defineProperties;var h=Object.getOwnPropertyDescriptors;var d=Object.getOwnPropertySymbols;var i=Object.prototype.hasOwnProperty,j=Object.prototype.propertyIsEnumerable;var k=Math.pow,e=(c,a,b)=>a in c?f(c,a,{enumerable:true,configurable:true,writable:true,value:b}):c[a]=b,l=(c,a)=>{for(var b in a||(a={}))i.call(a,b)&&e(c,b,a[b]);if(d)for(var b of d(a))j.call(a,b)&&e(c,b,a[b]);return c},m=(c,a)=>g(c,h(a));exports.a=k;exports.b=l;exports.c=m;//# sourceMappingURL=chunk-4JQOEJI5.cjs.map
2
+ //# sourceMappingURL=chunk-4JQOEJI5.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":[],"names":[],"mappings":"","file":"chunk-4JQOEJI5.cjs"}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkYMPRSR53_cjs=require('./chunk-YMPRSR53.cjs');var W=[[0,0,1,0,6288774,-20905355],[2,0,-1,0,1274027,-3699111],[2,0,0,0,658314,-2955968],[0,0,2,0,213618,-569925],[0,1,0,0,-185116,48888],[0,0,0,2,-114332,-3149],[2,0,-2,0,58793,246158],[2,-1,-1,0,57066,-152138],[2,0,1,0,53322,-170733],[2,-1,0,0,45758,-204586],[0,1,-1,0,-40923,-129620],[1,0,0,0,-34720,108743],[0,1,1,0,-30383,104755],[2,0,0,-2,15327,10321],[0,0,1,2,-12528,0],[0,0,1,-2,10980,79661],[4,0,-1,0,10675,-34782],[0,0,3,0,10034,-23210],[4,0,-2,0,8548,-21636],[2,1,-1,0,-7888,24208],[2,1,0,0,-6766,30824],[1,0,-1,0,-5163,-8379],[1,1,0,0,4987,-16675],[2,-1,1,0,4036,-12831],[2,0,2,0,3994,-10445],[4,0,0,0,3861,-11650],[2,0,-3,0,3665,14403],[0,1,-2,0,-2689,-7003],[2,0,-1,2,-2602,0],[2,-1,-2,0,2390,10056],[1,0,1,0,-2348,6322],[2,-2,0,0,2236,-9884],[0,1,2,0,-2120,5751],[0,2,0,0,-2069,0],[2,-2,-1,0,2048,-4950],[2,0,1,-2,-1773,4130],[2,0,0,2,-1595,0],[4,-1,-1,0,1215,-3958],[0,0,2,2,-1110,0],[3,0,-1,0,-892,3258],[2,1,1,0,-810,2616],[4,-1,-2,0,759,-1897],[0,2,-1,0,-713,-2117],[2,2,-1,0,-700,2354],[2,1,-2,0,691,0],[2,-1,0,-2,596,0],[4,0,1,0,549,-1423],[0,0,4,0,537,-1117],[4,-1,0,0,520,-1571],[1,0,-2,0,-487,-1739],[2,1,0,-2,-399,0],[0,0,2,-2,-381,-4421],[1,1,1,0,351,0],[3,0,-2,0,-340,0],[4,0,-3,0,330,0],[2,-1,2,0,327,0],[0,2,1,0,-323,1165],[1,1,-1,0,299,0],[2,0,3,0,294,0],[2,0,-1,-2,0,8752]],j=[[0,0,0,1,5128122],[0,0,1,1,280602],[0,0,1,-1,277693],[2,0,0,-1,173237],[2,0,-1,1,55413],[2,0,-1,-1,46271],[2,0,0,1,32573],[0,0,2,1,17198],[2,0,1,-1,9266],[0,0,2,-1,8822],[2,-1,0,-1,8216],[2,0,-2,-1,4324],[2,0,1,1,4200],[2,1,0,-1,-3359],[2,-1,-1,1,2463],[2,-1,0,1,2211],[2,-1,-1,-1,2065],[0,1,-1,-1,-1870],[4,0,-1,-1,1828],[0,1,0,1,-1794],[0,0,0,3,-1749],[0,1,-1,1,-1565],[1,0,0,1,-1491],[0,1,1,1,-1475],[0,1,1,-1,-1410],[0,1,0,-1,-1344],[1,0,0,-1,-1335],[0,0,3,1,1107],[4,0,0,-1,1021],[4,0,-1,1,833],[0,0,1,-3,777],[4,0,-2,1,671],[2,0,0,-3,607],[2,0,2,-1,596],[2,-1,1,-1,491],[2,0,-2,1,-451],[0,0,3,-1,439],[2,0,2,1,422],[2,0,-3,-1,421],[2,1,-1,1,-366],[2,1,0,1,-351],[4,0,0,1,331],[2,-1,1,1,315],[2,-2,0,-1,302],[0,0,1,3,-283],[2,1,1,-1,-229],[1,1,0,-1,223],[1,1,0,1,223],[0,1,-2,-1,-220],[2,1,-1,-1,-220],[1,0,1,1,-185],[2,-1,-2,-1,181],[0,1,2,1,-177],[4,0,-2,-1,176],[4,-1,-1,-1,166],[1,0,1,-1,-164],[4,0,1,-1,132],[1,0,-1,-1,-119],[4,-1,0,-1,115],[2,-2,0,1,107]];function X(K,n,B,i,F,N,Q,U){let{abs:x,round:k}=Math,r=chunkYMPRSR53_cjs.g(218.3164591+481267.88134236*n-.0013268*n*n+n*n*n/538841-n*n*n*n/65194e3),_=chunkYMPRSR53_cjs.g(297.8502042+445267.1115168*n-.00163*n*n+n*n*n/545868-n*n*n*n/113065e3),h=chunkYMPRSR53_cjs.g(357.5291092+35999.0502909*n-1536e-7*n*n+n*n*n/2449e4),l=chunkYMPRSR53_cjs.g(134.9634114+477198.8676313*n+.008997*n*n+n*n*n/69699-n*n*n*n/14712e3),u=chunkYMPRSR53_cjs.g(93.2720993+483202.0175273*n-.0034029*n*n-n*n*n/3526e3+n*n*n*n/86331e4),g=chunkYMPRSR53_cjs.g(119.75+131.849*n),q=chunkYMPRSR53_cjs.g(53.09+479264.29*n),v=chunkYMPRSR53_cjs.g(313.45+481266.484*n),b=1-.002516*n-74e-7*n*n,p=b*b,A=0,L=0;for(let c=0;c<W.length;c++){let o=W[c],e=1,a=x(o[1]);a===1?e=b:a===2&&(e=p);let d=o[0]*_+o[1]*h+o[2]*l+o[3]*u;A+=e*o[4]*chunkYMPRSR53_cjs.a(d),L+=e*o[5]*chunkYMPRSR53_cjs.b(d);}let M=0;for(let c=0;c<j.length;c++){let o=j[c],e=1,a=x(o[1]);a===1?e=b:a===2&&(e=p);let d=o[0]*_+o[1]*h+o[2]*l+o[3]*u;M+=e*o[4]*chunkYMPRSR53_cjs.a(d);}A=A+3958*chunkYMPRSR53_cjs.a(g)+1962*chunkYMPRSR53_cjs.a(r-u)+318*chunkYMPRSR53_cjs.a(q),M=M-2235*chunkYMPRSR53_cjs.a(r)+382*chunkYMPRSR53_cjs.a(v)+175*chunkYMPRSR53_cjs.a(g-u)+175*chunkYMPRSR53_cjs.a(g+u)+127*chunkYMPRSR53_cjs.a(r-l)-115*chunkYMPRSR53_cjs.a(r+l);let w=chunkYMPRSR53_cjs.g(r+A/1e6),D=M/1e6,H=385000.56+L/1e3,f=w+B,S=chunkYMPRSR53_cjs.g(chunkYMPRSR53_cjs.f(chunkYMPRSR53_cjs.a(f)*chunkYMPRSR53_cjs.b(i)-chunkYMPRSR53_cjs.c(D)*chunkYMPRSR53_cjs.a(i),chunkYMPRSR53_cjs.b(f))),y=chunkYMPRSR53_cjs.d(chunkYMPRSR53_cjs.a(D)*chunkYMPRSR53_cjs.b(i)+chunkYMPRSR53_cjs.b(D)*chunkYMPRSR53_cjs.a(i)*chunkYMPRSR53_cjs.a(f)),z=3600*chunkYMPRSR53_cjs.d(6378.14/H),I=3600*chunkYMPRSR53_cjs.d(1738/H),C=f-N,J=100*(1-chunkYMPRSR53_cjs.b(C))/2,G=chunkYMPRSR53_cjs.g(C);return {RA:S,DEC:y,GHA:chunkYMPRSR53_cjs.g(F-S),SHA:chunkYMPRSR53_cjs.g(360-S),SD:I,HP:z,illumination:k(10*J)/10,isWaxing:G>0&&G<180,distance:H}}exports.a=X;//# sourceMappingURL=chunk-BJ45B342.cjs.map
2
+ //# sourceMappingURL=chunk-BJ45B342.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/astronomy/moon.ts"],"names":["MOON_TERMS","LAT_TERMS","calculateMoon","jd","TE","deltaPsi","eps","GHAAtrue","sunLambda","sunRA","sunDec","abs","round","Lmoon_mean","norm360","D","Msun_mean","Mmoon_mean","F","A1","A2","A3","fE","fE2","sumL","sumR","i","term","f","msAbs","arg","sind","cosd","sumB","lambdaM","betaM","dEM","lambdaMapp","RA","atan2d","tand","DEC","asind","HP","SD","phaseAngle","illumination","xMoon"],"mappings":"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","file":"chunk-BJ45B342.cjs","sourcesContent":["/**\n * High-precision Lunar Ephemeris calculations.\n * Based on Meeus, Astronomical Algorithms.\n */\nimport { atan2d, cosd, norm360, sind, tand, asind } from '../core/math.js';\n\nexport interface MoonResult {\n RA: number;\n DEC: number;\n GHA: number;\n SHA: number;\n SD: number;\n HP: number;\n illumination: number; // Percentage\n isWaxing: boolean;\n distance: number; // Earth-Moon distance in km\n}\n\n// Optimized numerical representation of the moon terms to reduce bundle size and parsing overhead.\nconst MOON_TERMS = [\n [0, 0, 1, 0, 6288774, -20905355],\n [2, 0, -1, 0, 1274027, -3699111],\n [2, 0, 0, 0, 658314, -2955968],\n [0, 0, 2, 0, 213618, -569925],\n [0, 1, 0, 0, -185116, 48888],\n [0, 0, 0, 2, -114332, -3149],\n [2, 0, -2, 0, 58793, 246158],\n [2, -1, -1, 0, 57066, -152138],\n [2, 0, 1, 0, 53322, -170733],\n [2, -1, 0, 0, 45758, -204586],\n [0, 1, -1, 0, -40923, -129620],\n [1, 0, 0, 0, -34720, 108743],\n [0, 1, 1, 0, -30383, 104755],\n [2, 0, 0, -2, 15327, 10321],\n [0, 0, 1, 2, -12528, 0],\n [0, 0, 1, -2, 10980, 79661],\n [4, 0, -1, 0, 10675, -34782],\n [0, 0, 3, 0, 10034, -23210],\n [4, 0, -2, 0, 8548, -21636],\n [2, 1, -1, 0, -7888, 24208],\n [2, 1, 0, 0, -6766, 30824],\n [1, 0, -1, 0, -5163, -8379],\n [1, 1, 0, 0, 4987, -16675],\n [2, -1, 1, 0, 4036, -12831],\n [2, 0, 2, 0, 3994, -10445],\n [4, 0, 0, 0, 3861, -11650],\n [2, 0, -3, 0, 3665, 14403],\n [0, 1, -2, 0, -2689, -7003],\n [2, 0, -1, 2, -2602, 0],\n [2, -1, -2, 0, 2390, 10056],\n [1, 0, 1, 0, -2348, 6322],\n [2, -2, 0, 0, 2236, -9884],\n [0, 1, 2, 0, -2120, 5751],\n [0, 2, 0, 0, -2069, 0],\n [2, -2, -1, 0, 2048, -4950],\n [2, 0, 1, -2, -1773, 4130],\n [2, 0, 0, 2, -1595, 0],\n [4, -1, -1, 0, 1215, -3958],\n [0, 0, 2, 2, -1110, 0],\n [3, 0, -1, 0, -892, 3258],\n [2, 1, 1, 0, -810, 2616],\n [4, -1, -2, 0, 759, -1897],\n [0, 2, -1, 0, -713, -2117],\n [2, 2, -1, 0, -700, 2354],\n [2, 1, -2, 0, 691, 0],\n [2, -1, 0, -2, 596, 0],\n [4, 0, 1, 0, 549, -1423],\n [0, 0, 4, 0, 537, -1117],\n [4, -1, 0, 0, 520, -1571],\n [1, 0, -2, 0, -487, -1739],\n [2, 1, 0, -2, -399, 0],\n [0, 0, 2, -2, -381, -4421],\n [1, 1, 1, 0, 351, 0],\n [3, 0, -2, 0, -340, 0],\n [4, 0, -3, 0, 330, 0],\n [2, -1, 2, 0, 327, 0],\n [0, 2, 1, 0, -323, 1165],\n [1, 1, -1, 0, 299, 0],\n [2, 0, 3, 0, 294, 0],\n [2, 0, -1, -2, 0, 8752]\n];\n\nconst LAT_TERMS = [\n [0, 0, 0, 1, 5128122],\n [0, 0, 1, 1, 280602],\n [0, 0, 1, -1, 277693],\n [2, 0, 0, -1, 173237],\n [2, 0, -1, 1, 55413],\n [2, 0, -1, -1, 46271],\n [2, 0, 0, 1, 32573],\n [0, 0, 2, 1, 17198],\n [2, 0, 1, -1, 9266],\n [0, 0, 2, -1, 8822],\n [2, -1, 0, -1, 8216],\n [2, 0, -2, -1, 4324],\n [2, 0, 1, 1, 4200],\n [2, 1, 0, -1, -3359],\n [2, -1, -1, 1, 2463],\n [2, -1, 0, 1, 2211],\n [2, -1, -1, -1, 2065],\n [0, 1, -1, -1, -1870],\n [4, 0, -1, -1, 1828],\n [0, 1, 0, 1, -1794],\n [0, 0, 0, 3, -1749],\n [0, 1, -1, 1, -1565],\n [1, 0, 0, 1, -1491],\n [0, 1, 1, 1, -1475],\n [0, 1, 1, -1, -1410],\n [0, 1, 0, -1, -1344],\n [1, 0, 0, -1, -1335],\n [0, 0, 3, 1, 1107],\n [4, 0, 0, -1, 1021],\n [4, 0, -1, 1, 833],\n [0, 0, 1, -3, 777],\n [4, 0, -2, 1, 671],\n [2, 0, 0, -3, 607],\n [2, 0, 2, -1, 596],\n [2, -1, 1, -1, 491],\n [2, 0, -2, 1, -451],\n [0, 0, 3, -1, 439],\n [2, 0, 2, 1, 422],\n [2, 0, -3, -1, 421],\n [2, 1, -1, 1, -366],\n [2, 1, 0, 1, -351],\n [4, 0, 0, 1, 331],\n [2, -1, 1, 1, 315],\n [2, -2, 0, -1, 302],\n [0, 0, 1, 3, -283],\n [2, 1, 1, -1, -229],\n [1, 1, 0, -1, 223],\n [1, 1, 0, 1, 223],\n [0, 1, -2, -1, -220],\n [2, 1, -1, -1, -220],\n [1, 0, 1, 1, -185],\n [2, -1, -2, -1, 181],\n [0, 1, 2, 1, -177],\n [4, 0, -2, -1, 176],\n [4, -1, -1, -1, 166],\n [1, 0, 1, -1, -164],\n [4, 0, 1, -1, 132],\n [1, 0, -1, -1, -119],\n [4, -1, 0, -1, 115],\n [2, -2, 0, 1, 107]\n];\n\nexport function calculateMoon(jd: number, TE: number, deltaPsi: number, eps: number, GHAAtrue: number, sunLambda: number, sunRA: number, sunDec: number): MoonResult {\n const { abs, round } = Math;\n\n const Lmoon_mean = norm360(218.3164591 + 481267.88134236 * TE - 0.0013268 * TE * TE + TE * TE * TE / 538841 - TE * TE * TE * TE / 65194000);\n const D = norm360(297.8502042 + 445267.1115168 * TE - 0.00163 * TE * TE + TE * TE * TE / 545868 - TE * TE * TE * TE / 113065000);\n const Msun_mean = norm360(357.5291092 + 35999.0502909 * TE - 0.0001536 * TE * TE + TE * TE * TE / 24490000);\n const Mmoon_mean = norm360(134.9634114 + 477198.8676313 * TE + 0.008997 * TE * TE + TE * TE * TE / 69699 - TE * TE * TE * TE / 14712000);\n const F = norm360(93.2720993 + 483202.0175273 * TE - 0.0034029 * TE * TE - TE * TE * TE / 3526000 + TE * TE * TE * TE / 863310000);\n\n const A1 = norm360(119.75 + 131.849 * TE);\n const A2 = norm360(53.09 + 479264.29 * TE);\n const A3 = norm360(313.45 + 481266.484 * TE);\n\n const fE = 1 - 0.002516 * TE - 0.0000074 * TE * TE;\n const fE2 = fE * fE;\n\n let sumL = 0;\n let sumR = 0;\n\n for (let i = 0; i < MOON_TERMS.length; i++) {\n const term = MOON_TERMS[i];\n let f = 1;\n const msAbs = abs(term[1]);\n if (msAbs === 1) f = fE;\n else if (msAbs === 2) f = fE2;\n \n const arg = term[0] * D + term[1] * Msun_mean + term[2] * Mmoon_mean + term[3] * F;\n sumL += f * term[4] * sind(arg);\n sumR += f * term[5] * cosd(arg);\n }\n\n let sumB = 0;\n for (let i = 0; i < LAT_TERMS.length; i++) {\n const term = LAT_TERMS[i];\n let f = 1;\n const msAbs = abs(term[1]);\n if (msAbs === 1) f = fE;\n else if (msAbs === 2) f = fE2;\n \n const arg = term[0] * D + term[1] * Msun_mean + term[2] * Mmoon_mean + term[3] * F;\n sumB += f * term[4] * sind(arg);\n }\n\n sumL = sumL + 3958 * sind(A1) + 1962 * sind(Lmoon_mean - F) + 318 * sind(A2);\n sumB = sumB - 2235 * sind(Lmoon_mean) + 382 * sind(A3) + 175 * sind(A1 - F) + 175 * sind(A1 + F) + 127 * sind(Lmoon_mean - Mmoon_mean) - 115 * sind(Lmoon_mean + Mmoon_mean);\n\n const lambdaM = norm360(Lmoon_mean + sumL / 1000000);\n const betaM = sumB / 1000000;\n const dEM = 385000.56 + sumR / 1000;\n\n const lambdaMapp = lambdaM + deltaPsi;\n const RA = norm360(atan2d((sind(lambdaMapp) * cosd(eps) - tand(betaM) * sind(eps)), cosd(lambdaMapp)));\n const DEC = asind(sind(betaM) * cosd(eps) + cosd(betaM) * sind(eps) * sind(lambdaMapp));\n const HP = 3600 * asind(6378.14 / dEM);\n const SD = 3600 * asind(1738 / dEM);\n\n const phaseAngle = lambdaMapp - sunLambda;\n const illumination = 100 * (1 - cosd(phaseAngle)) / 2;\n const xMoon = norm360(phaseAngle);\n\n return { \n RA, DEC, \n GHA: norm360(GHAAtrue - RA), \n SHA: norm360(360 - RA), \n SD, HP, \n illumination: round(10 * illumination) / 10, \n isWaxing: (xMoon > 0 && xMoon < 180), \n distance: dEM \n };\n}\n"]}
@@ -0,0 +1,2 @@
1
+ function u(r,n=10,e=1010){if(r<0)return 0;let t=(r+7.31/(r+4.4))*(Math.PI/180),o=1/Math.tan(t),c=e/1010,i=283.15/(n+273.15);return o*c*i}export{u as a};//# sourceMappingURL=chunk-CSU6AEKX.js.map
2
+ //# sourceMappingURL=chunk-CSU6AEKX.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/astronomy/refraction.ts"],"names":["getRefraction","apparentAltitudeDeg","temperatureC","pressureMbar","interiorAngleRad","baseRefractionArcminutes","pressureFactor","temperatureFactor"],"mappings":"AAGO,SAASA,EACdC,CAAAA,CACAC,CAAAA,CAAuB,EAAA,CACvBC,CAAAA,CAAuB,KACf,CACR,GAAIF,CAAAA,CAAsB,CAAA,CACxB,OAAO,CAAA,CAIT,IAAMG,CAAAA,CAAAA,CADmBH,CAAAA,CAAsB,MAAQA,CAAAA,CAAsB,GAAA,CAAA,GAChC,IAAA,CAAK,EAAA,CAAK,KAEjDI,CAAAA,CAA2B,CAAA,CAAI,IAAA,CAAK,GAAA,CAAID,CAAgB,CAAA,CAExDE,CAAAA,CAAiBH,CAAAA,CAAe,IAAA,CAChCI,EAAoB,MAAA,EAAUL,CAAAA,CAAe,QAEnD,OAAOG,CAAAA,CAA2BC,EAAiBC,CACrD","file":"chunk-CSU6AEKX.js","sourcesContent":["/**\n * Calculates the astronomical atmospheric refraction correction using Bennett's Formula (1982).\n */\nexport function getRefraction(\n apparentAltitudeDeg: number,\n temperatureC: number = 10,\n pressureMbar: number = 1010.0\n): number {\n if (apparentAltitudeDeg < 0) {\n return 0;\n }\n\n const interiorAngleDeg = apparentAltitudeDeg + 7.31 / (apparentAltitudeDeg + 4.4);\n const interiorAngleRad = interiorAngleDeg * (Math.PI / 180);\n\n const baseRefractionArcminutes = 1 / Math.tan(interiorAngleRad);\n\n const pressureFactor = pressureMbar / 1010.0;\n const temperatureFactor = 283.15 / (temperatureC + 273.15);\n\n return baseRefractionArcminutes * pressureFactor * temperatureFactor;\n}\n"]}
@@ -0,0 +1,2 @@
1
+ var u=e=>({success:true,data:e}),t=e=>({success:false,error:e}),n=(e,r,s)=>e<-90||e>90?t(`Invalid latitude: ${e}`):r<-180||r>180?t(`Invalid longitude: ${r}`):s&&isNaN(s.getTime())?t("Invalid date"):u(void 0);export{u as a,t as b,n as c};//# sourceMappingURL=chunk-DJ357A47.js.map
2
+ //# sourceMappingURL=chunk-DJ357A47.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/core/result.ts"],"names":["Success","data","Failure","error","validateInputs","lat","lng","date"],"mappings":"AAOO,IAAMA,CAAAA,CAAcC,IAClB,CAAE,OAAA,CAAS,KAAM,IAAA,CAAAA,CAAK,CAAA,CAAA,CAGlBC,CAAAA,CAAcC,CAAAA,GAClB,CAAE,QAAS,KAAA,CAAO,KAAA,CAAAA,CAAM,CAAA,CAAA,CAMpBC,CAAAA,CAAiB,CAACC,CAAAA,CAAaC,CAAAA,CAAaC,CAAAA,GACnDF,CAAAA,CAAM,GAAA,EAAOA,CAAAA,CAAM,GAAWH,CAAAA,CAAQ,CAAA,kBAAA,EAAqBG,CAAG,CAAA,CAAE,CAAA,CAChEC,EAAM,IAAA,EAAQA,CAAAA,CAAM,GAAA,CAAYJ,CAAAA,CAAQ,CAAA,mBAAA,EAAsBI,CAAG,EAAE,CAAA,CACnEC,CAAAA,EAAQ,KAAA,CAAMA,CAAAA,CAAK,OAAA,EAAS,EAAUL,CAAAA,CAAQ,cAAc,CAAA,CACzDF,CAAAA,CAAQ,MAAS","file":"chunk-DJ357A47.js","sourcesContent":["/**\n * Result type for robust error handling.\n */\nexport type Result<T, E = string> = \n | { success: true; data: T }\n | { success: false; error: E };\n\nexport const Success = <T>(data: T): Result<T, never> => {\n return { success: true, data };\n};\n\nexport const Failure = <E>(error: E): Result<never, E> => {\n return { success: false, error };\n};\n\n/**\n * Validates coordinates and dates.\n */\nexport const validateInputs = (lat: number, lng: number, date?: Date): Result<void> => {\n if (lat < -90 || lat > 90) return Failure(`Invalid latitude: ${lat}`);\n if (lng < -180 || lng > 180) return Failure(`Invalid longitude: ${lng}`);\n if (date && isNaN(date.getTime())) return Failure('Invalid date');\n return Success(undefined);\n};\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkH33IJIM5_cjs=require('./chunk-H33IJIM5.cjs'),chunkYSOESZ35_cjs=require('./chunk-YSOESZ35.cjs'),chunkYDSVFKVM_cjs=require('./chunk-YDSVFKVM.cjs'),chunkYMPRSR53_cjs=require('./chunk-YMPRSR53.cjs'),chunkYZUP33VG_cjs=require('./chunk-YZUP33VG.cjs'),chunk4JQOEJI5_cjs=require('./chunk-4JQOEJI5.cjs');var Y=(y,f="Karachi")=>{let o=y,C=f,m=(e,t)=>{let s=new Date(Date.UTC(e.getUTCFullYear(),e.getUTCMonth(),e.getUTCDate(),0,0,0));if(isNaN(t))return new Date(NaN);let n=Math.round(t*3600);return s.setUTCSeconds(n),s},u=e=>{let t=chunkYDSVFKVM_cjs.a(e),a=(t+70/86400-2451545)/36525,i=(t-2451545)/36525,r=.1*a,c=chunkYMPRSR53_cjs.h(a);return {solar:chunkYMPRSR53_cjs.i(t,c.deltaPsi,c.eps,a,r,i),jd:t}},R=e=>{let t=12-o.longitude/15;for(let s=0;s<3;s++){let n=m(e,t),{solar:a}=u(n);t=12-o.longitude/15-a.EOT/60;}return m(e,t)},T=(e,t,s)=>{let n=s==="morning"?6:18,a=n;for(let i=0;i<5;i++){let r=m(e,a),{solar:c}=u(r),l=chunkYMPRSR53_cjs.b(o.latitude)*chunkYMPRSR53_cjs.b(c.DEC);if(Math.abs(l)<1e-10)return new Date(NaN);let g=(chunkYMPRSR53_cjs.a(-t)-chunkYMPRSR53_cjs.a(o.latitude)*chunkYMPRSR53_cjs.a(c.DEC))/l;if(g>1||g<-1)return new Date(NaN);let p=chunkYMPRSR53_cjs.e(g)/15,h=12-o.longitude/15-c.EOT/60;if(a=s==="morning"?h-p:h+p,Math.abs(a-n)*3600<1)break;n=a;}return m(e,a)},d=(e,t)=>{let s=t==="morning"?6:18,n=s;for(let a=0;a<5;a++){let i=m(e,n),{solar:r}=u(i),c=34/60,l=r.SD/3600,g=r.HP/3600,p=o.elevation||0,h=.02933333*Math.sqrt(p),U=90+c+l-g+h,I=chunkYMPRSR53_cjs.b(o.latitude)*chunkYMPRSR53_cjs.b(r.DEC);if(Math.abs(I)<1e-10)return new Date(NaN);let N=(chunkYMPRSR53_cjs.b(U)-chunkYMPRSR53_cjs.a(o.latitude)*chunkYMPRSR53_cjs.a(r.DEC))/I;if(N>1||N<-1)return new Date(NaN);let w=chunkYMPRSR53_cjs.e(N)/15,M=12-o.longitude/15-r.EOT/60;if(n=t==="morning"?M-w:M+w,Math.abs(n-s)*3600<1)break;s=n;}return m(e,n)},b=(e,t,s,n,a)=>{let{solar:i}=u(s),r=Math.abs(o.latitude-i.DEC),c=i.SD/3600,l=chunkYSOESZ35_cjs.a(90-r,n,a)/60,g=r-l-c,p=15,h=p;for(let U=0;U<5;U++){let I=m(e,h),{solar:N}=u(I),w=chunkYMPRSR53_cjs.f(chunkYMPRSR53_cjs.c(g)+t,1),M=chunkYSOESZ35_cjs.a(90-w,n,a)/60,k=N.SD/3600,Z=w+M+k,v=chunkYMPRSR53_cjs.b(o.latitude)*chunkYMPRSR53_cjs.b(N.DEC);if(Math.abs(v)<1e-10)return new Date(NaN);let P=(chunkYMPRSR53_cjs.b(Z)-chunkYMPRSR53_cjs.a(o.latitude)*chunkYMPRSR53_cjs.a(N.DEC))/v;if(P>1||P<-1)return new Date(NaN);let H=chunkYMPRSR53_cjs.e(P)/15;if(h=12-o.longitude/15-N.EOT/60+H,Math.abs(h-p)*3600<1)break;p=h;}return m(e,h)};return {calculate:(e,t=2,s=10,n=1010,a)=>{try{let i=R(e),r=chunkH33IJIM5_cjs.a[C],c=T(e,r.fajrAngle,"morning"),l=d(e,"morning"),g=r.maghribInterval?new Date(l.getTime()+r.maghribInterval*6e4):r.maghribAngle?T(e,r.maghribAngle,"evening"):d(e,"evening"),p=a!==void 0?a:r.ishaAngle||18,h=r.ishaInterval?new Date(g.getTime()+r.ishaInterval*6e4):T(e,p,"evening"),U=b(e,t,i,s,n),I=isNaN(c.getTime())||isNaN(g.getTime())?new Date(NaN):new Date((c.getTime()+g.getTime())/2),N={fajr:c,sunrise:l,dhahwaKubra:I,dhuhr:i,asr:U,maghrib:g,isha:h,format(w,M){let k={},Z=["fajr","sunrise","dhahwaKubra","dhuhr","asr","maghrib","isha"];for(let v of Z){let P=this[v];if(!P||isNaN(P.getTime())){k[v]=w==="unix"?NaN:"Invalid Date";continue}if(w==="iso8601")k[v]=P.toISOString();else if(w==="unix")k[v]=Math.floor(P.getTime()/1e3);else {let H={hour:"2-digit",minute:"2-digit",second:"2-digit",hour12:w==="12h"};M&&(H.timeZone=M),k[v]=new Intl.DateTimeFormat("en-US",H).format(P);}}return k}};return isNaN(c.getTime())||isNaN(i.getTime())||isNaN(g.getTime())?chunkYZUP33VG_cjs.b("One or more prayer times could not be calculated (Extreme latitude or invalid date)."):chunkYZUP33VG_cjs.a(N)}catch(i){return chunkYZUP33VG_cjs.b(i instanceof Error?i.message:"Unknown calculation error")}}}};var F=y=>{var s,n;let{location:f,date:o=new Date,method:C="Karachi",madhab:m="Hanafi",elevation:u=(n=(s=y.location)==null?void 0:s.elevation)!=null?n:0,temperature:R=10,pressure:T=1013.25,adjustments:d={}}=y;if(!f)return chunkYZUP33VG_cjs.b("Location is required");let b=chunkYZUP33VG_cjs.c(f.latitude,f.longitude,o);if(!b.success)return b;let e=m==="Hanafi"?2:1,t=m==="Hanafi"?18:12;try{let i=Y(chunk4JQOEJI5_cjs.c(chunk4JQOEJI5_cjs.b({},f),{elevation:u}),C).calculate(o,e,R,T,t);if(i.success&&Object.keys(d).length>0){let r=i.data,c=["fajr","sunrise","dhahwaKubra","dhuhr","asr","maghrib","isha"];for(let l of c)d[l]&&!isNaN(r[l].getTime())&&(r[l]=new Date(r[l].getTime()+d[l]*6e4));}return i}catch(a){return chunkYZUP33VG_cjs.b(a instanceof Error?a.message:"Unknown error during calculation")}};function B(y,f,o){let C=[],m=new Date(y,f,0).getDate();for(let u=1;u<=m;u++){let R=new Date(y,f-1,u),T=F(chunk4JQOEJI5_cjs.c(chunk4JQOEJI5_cjs.b({},o),{date:R}));if(!T.success)return chunkYZUP33VG_cjs.b(`Failed to calculate times for day ${u}: ${T.error}`);let d=T.data;C.push(chunk4JQOEJI5_cjs.c(chunk4JQOEJI5_cjs.b({},d),{date:R.toLocaleDateString(),day:u,weekday:R.toLocaleDateString("en-US",{weekday:"long"})}));}return chunkYZUP33VG_cjs.a(C)}function G(y,f,o,C=0,m=0){let u=[],R=Math.abs(f.getTime()-y.getTime());if(Math.ceil(R/(1e3*60*60*24))>31)return chunkYZUP33VG_cjs.b("Date range cannot exceed 31 days.");let d=new Date(y);for(;d<=f;){let b=new Date(d),e=F(chunk4JQOEJI5_cjs.c(chunk4JQOEJI5_cjs.b({},o),{date:b}));if(!e.success)return chunkYZUP33VG_cjs.b(`Failed to calculate times for ${b.toLocaleDateString()}: ${e.error}`);let t=e.data;u.push({date:b.toLocaleDateString(),day:b.getDate(),weekday:b.toLocaleDateString("en-US",{weekday:"long"}),fajr:t.fajr,maghrib:t.maghrib,sahurEndsAt:new Date(t.fajr.getTime()-C*6e4),iftarAt:new Date(t.maghrib.getTime()+m*6e4)}),d.setDate(d.getDate()+1);}return chunkYZUP33VG_cjs.a(u)}exports.a=Y;exports.b=F;exports.c=B;exports.d=G;//# sourceMappingURL=chunk-E4M4MYZR.cjs.map
2
+ //# sourceMappingURL=chunk-E4M4MYZR.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/prayer/engine.ts","../src/prayer/calculate.ts","../src/prayer/monthly.ts","../src/prayer/ramadan.ts"],"names":["createPrayerEngine","coords","method","_coords","_method","toDate","baseDate","utcHours","d","totalSeconds","getSolarAt","date","jd","getJulianDate","te","t","tau","nut","calculateNutation","calculateSolar","calculateTransit","currentUtcTime","i","checkDate","solar","solveIteratively","angleBelowHorizon","side","prevTime","denominator","cosd","cosH","sind","H","acosd","transit","solvePhenomenonIteratively","refraction","sd_deg","hp_deg","elevation","dip","targetZenith","solveAsrIteratively","factor","dhuhr","temperature","pressureMbar","solarZuhr","zZuhr","sdZuhr","refrZuhr","getRefraction","zZuhrVisual","zAsrVisual","atan2d","tand","refrAsr","sdAsr","asrFactor","ishaAngleOverride","params","PRESETS","fajr","sunrise","maghrib","ishaAngle","isha","asr","dhahwaKubra","results","type","timeZone","formatted","keys","key","options","Failure","Success","e","getPrayerTimes","config","_a","_b","location","madhab","pressure","adjustments","validation","validateInputs","result","__spreadProps","__spreadValues","times","getMonthlyPrayerTimes","year","month","daysInMonth","day","timesResult","getRamadanSchedule","startDate","endDate","sahurBuffer","iftarBuffer","diffTime","current"],"mappings":"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","file":"chunk-E4M4MYZR.cjs","sourcesContent":["/**\n * Core Prayer Time Engine.\n * Following strictly defined Successive Approximation Algorithmic Workflow.\n * Modularized and encapsulated using closures for privacy and small footprint.\n */\nimport { acosd, sind, cosd, tand, atan2d } from '../core/math.js';\nimport { getRefraction } from '../astronomy/refraction.js';\nimport { getJulianDate } from '../core/time.js';\nimport { calculateNutation } from '../astronomy/nutation.js';\nimport { calculateSolar, SolarResult } from '../astronomy/solar.js';\nimport { Coordinates, CalculationMethod, PrayerTimesResult } from './types/index.js';\nimport { PRESETS } from './constants/methods.js';\nimport { Result, Success, Failure } from '../core/result.js';\n\n/**\n * Creates a prayer engine instance.\n * @param coords Observer coordinates.\n * @param method Calculation method preset.\n */\nexport const createPrayerEngine = (coords: Coordinates, method: CalculationMethod = 'Karachi') => {\n // Private variables via closure\n const _coords = coords;\n const _method = method;\n\n /**\n * Internal helper to convert UTC hours to a Date object.\n */\n const toDate = (baseDate: Date, utcHours: number): Date => {\n const d = new Date(Date.UTC(baseDate.getUTCFullYear(), baseDate.getUTCMonth(), baseDate.getUTCDate(), 0, 0, 0));\n if (isNaN(utcHours)) return new Date(NaN);\n const totalSeconds = Math.round(utcHours * 3600);\n d.setUTCSeconds(totalSeconds);\n return d;\n };\n\n /**\n * Internal helper to get solar ephemeris at a specific date.\n */\n const getSolarAt = (date: Date): { solar: SolarResult, jd: number } => {\n const jd = getJulianDate(date);\n const dt = 70; // Fixed ΔT as requested in original logic\n const jde = jd + dt / 86400;\n const te = (jde - 2451545) / 36525;\n const t = (jd - 2451545) / 36525;\n const tau = 0.1 * te;\n const nut = calculateNutation(te);\n const solar = calculateSolar(jd, nut.deltaPsi, nut.eps, te, tau, t);\n return { solar, jd };\n };\n\n /**\n * Solves for solar transit (Noon).\n */\n const calculateTransit = (date: Date): Date => {\n let currentUtcTime = 12 - (_coords.longitude / 15);\n for (let i = 0; i < 3; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n currentUtcTime = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n }\n return toDate(date, currentUtcTime);\n };\n\n /**\n * Solves iteratively for a target zenith angle.\n */\n const solveIteratively = (date: Date, angleBelowHorizon: number, side: 'morning' | 'evening'): Date => {\n let prevTime = side === 'morning' ? 6 : 18;\n let currentUtcTime = prevTime;\n\n for (let i = 0; i < 5; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n const denominator = cosd(_coords.latitude) * cosd(solar.DEC);\n\n if (Math.abs(denominator) < 1e-10) return new Date(NaN);\n\n const cosH = (sind(-angleBelowHorizon) - sind(_coords.latitude) * sind(solar.DEC)) / denominator;\n if (cosH > 1 || cosH < -1) return new Date(NaN);\n\n const H = acosd(cosH) / 15;\n const transit = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n currentUtcTime = side === 'morning' ? transit - H : transit + H;\n\n if (Math.abs(currentUtcTime - prevTime) * 3600 < 1) break;\n prevTime = currentUtcTime;\n }\n return toDate(date, currentUtcTime);\n };\n\n /**\n * Solves iteratively for Sunrise/Maghrib (with refraction and SD).\n */\n const solvePhenomenonIteratively = (date: Date, side: 'morning' | 'evening'): Date => {\n let prevTime = side === 'morning' ? 6 : 18;\n let currentUtcTime = prevTime;\n\n for (let i = 0; i < 5; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n const refraction = 34 / 60;\n const sd_deg = solar.SD / 3600;\n const hp_deg = solar.HP / 3600;\n const elevation = _coords.elevation || 0;\n const dip = 0.02933333 * Math.sqrt(elevation);\n\n const targetZenith = 90 + refraction + sd_deg - hp_deg + dip;\n const denominator = cosd(_coords.latitude) * cosd(solar.DEC);\n\n if (Math.abs(denominator) < 1e-10) return new Date(NaN);\n\n const cosH = (cosd(targetZenith) - sind(_coords.latitude) * sind(solar.DEC)) / denominator;\n if (cosH > 1 || cosH < -1) return new Date(NaN);\n\n const H = acosd(cosH) / 15;\n const transit = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n currentUtcTime = side === 'morning' ? transit - H : transit + H;\n\n if (Math.abs(currentUtcTime - prevTime) * 3600 < 1) break;\n prevTime = currentUtcTime;\n }\n return toDate(date, currentUtcTime);\n };\n\n /**\n * Solves iteratively for Asr.\n */\n const solveAsrIteratively = (date: Date, factor: number, dhuhr: Date, temperature: number, pressureMbar: number): Date => {\n const { solar: solarZuhr } = getSolarAt(dhuhr);\n const zZuhr = Math.abs(_coords.latitude - solarZuhr.DEC);\n const sdZuhr = solarZuhr.SD / 3600;\n const refrZuhr = getRefraction(90 - zZuhr, temperature, pressureMbar) / 60;\n const zZuhrVisual = zZuhr - refrZuhr - sdZuhr;\n\n let prevTime = 15;\n let currentUtcTime = prevTime;\n\n for (let i = 0; i < 5; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n const zAsrVisual = atan2d(tand(zZuhrVisual) + factor, 1);\n const refrAsr = getRefraction(90 - zAsrVisual, temperature, pressureMbar) / 60;\n const sdAsr = solar.SD / 3600;\n const targetZenith = zAsrVisual + refrAsr + sdAsr;\n\n const denominator = cosd(_coords.latitude) * cosd(solar.DEC);\n if (Math.abs(denominator) < 1e-10) return new Date(NaN);\n\n const cosH = (cosd(targetZenith) - sind(_coords.latitude) * sind(solar.DEC)) / denominator;\n if (cosH > 1 || cosH < -1) return new Date(NaN);\n\n const H = acosd(cosH) / 15;\n const transit = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n currentUtcTime = transit + H;\n\n if (Math.abs(currentUtcTime - prevTime) * 3600 < 1) break;\n prevTime = currentUtcTime;\n }\n return toDate(date, currentUtcTime);\n };\n\n // Exposed API\n return {\n calculate: (\n date: Date,\n asrFactor: number = 2,\n temperature: number = 10,\n pressureMbar: number = 1010.0,\n ishaAngleOverride?: number\n ): Result<PrayerTimesResult> => {\n try {\n const dhuhr = calculateTransit(date);\n const params = PRESETS[_method];\n\n const fajr = solveIteratively(date, params.fajrAngle, 'morning');\n const sunrise = solvePhenomenonIteratively(date, 'morning');\n\n const maghrib = params.maghribInterval\n ? new Date(sunrise.getTime() + params.maghribInterval * 60000)\n : params.maghribAngle\n ? solveIteratively(date, params.maghribAngle, 'evening')\n : solvePhenomenonIteratively(date, 'evening');\n\n const ishaAngle = ishaAngleOverride !== undefined ? ishaAngleOverride : (params.ishaAngle || 18);\n const isha = params.ishaInterval\n ? new Date(maghrib.getTime() + params.ishaInterval * 60000)\n : solveIteratively(date, ishaAngle, 'evening');\n\n const asr = solveAsrIteratively(date, asrFactor, dhuhr, temperature, pressureMbar);\n \n const dhahwaKubra = (isNaN(fajr.getTime()) || isNaN(maghrib.getTime()))\n ? new Date(NaN)\n : new Date((fajr.getTime() + maghrib.getTime()) / 2);\n\n const results: PrayerTimesResult = { \n fajr, sunrise, dhahwaKubra, dhuhr, asr, maghrib, isha,\n format(type: 'iso8601' | 'unix' | '12h' | '24h', timeZone?: string) {\n const formatted: Record<string, string | number> = {};\n const keys: (keyof Omit<PrayerTimesResult, 'format'>)[] = ['fajr', 'sunrise', 'dhahwaKubra', 'dhuhr', 'asr', 'maghrib', 'isha'];\n \n for (const key of keys) {\n const d = this[key];\n if (!d || isNaN(d.getTime())) {\n formatted[key] = type === 'unix' ? NaN : 'Invalid Date';\n continue;\n }\n\n if (type === 'iso8601') {\n formatted[key] = d.toISOString();\n } else if (type === 'unix') {\n formatted[key] = Math.floor(d.getTime() / 1000);\n } else {\n const options: Intl.DateTimeFormatOptions = {\n hour: '2-digit',\n minute: '2-digit',\n second: '2-digit',\n hour12: type === '12h'\n };\n if (timeZone) {\n options.timeZone = timeZone;\n }\n formatted[key] = new Intl.DateTimeFormat('en-US', options).format(d);\n }\n }\n return formatted as Record<Exclude<keyof PrayerTimesResult, 'format'>, string | number>;\n }\n };\n\n // Verify if any critical time is NaN (e.g. at extreme latitudes)\n if (isNaN(fajr.getTime()) || isNaN(dhuhr.getTime()) || isNaN(maghrib.getTime())) {\n return Failure('One or more prayer times could not be calculated (Extreme latitude or invalid date).');\n }\n\n return Success(results);\n } catch (e) {\n return Failure(e instanceof Error ? e.message : 'Unknown calculation error');\n }\n }\n };\n};\n","import { createPrayerEngine } from './engine.js';\nimport { Coordinates, CalculationMethod, PrayerTimesResult } from './types/index.js';\nimport { Result, validateInputs, Failure } from '../core/result.js';\n\n/**\n * Configuration for prayer time calculations.\n */\nexport interface PrayerConfig {\n /** \n * Observer coordinates. \n * Must include latitude (-90 to 90) and longitude (-180 to 180).\n */\n location: Coordinates;\n \n /** \n * Calculation date. \n * @default new Date() (Today)\n */\n date?: Date;\n \n /** \n * Calculation method preset. \n * Determines Fajr and Isha angles.\n * @default 'Karachi'\n */\n method?: CalculationMethod;\n \n /** \n * Madhab for Asr calculation. \n * 'Hanafi' uses shadow factor 2, 'Shafi' uses factor 1.\n * @default 'Hanafi'\n */\n madhab?: 'Shafi' | 'Hanafi';\n \n /** \n * Elevation in meters above sea level. \n * Influences Sunrise and Maghrib via atmospheric dip.\n * @default 0\n */\n elevation?: number;\n \n /** \n * Ambient temperature in Celsius. \n * Influences atmospheric refraction.\n * @default 10\n */\n temperature?: number;\n \n /** \n * Atmospheric pressure in mbar (hPa). \n * Influences atmospheric refraction.\n * @default 1013.25\n */\n pressure?: number;\n /**\n * Manual minute adjustments for each prayer time.\n * Useful for matching local mosque timings or applying safety margins.\n */\n adjustments?: Partial<Record<Exclude<keyof PrayerTimesResult, 'format'>, number>>;\n}\n\n/**\n * High-level API for calculating prayer times with smart defaults.\n * Follows the Result Pattern to ensure host stability.\n * \n * @example\n * const result = getPrayerTimes({ location: { latitude: 24.86, longitude: 67.01 } });\n * if (result.success) {\n * console.log(result.data.fajr);\n * } else {\n * console.error(result.error);\n * }\n */\nexport const getPrayerTimes = (config: PrayerConfig): Result<PrayerTimesResult> => {\n // Apply smart defaults\n const {\n location,\n date = new Date(),\n method = 'Karachi',\n madhab = 'Hanafi',\n elevation = config.location?.elevation ?? 0,\n temperature = 10,\n pressure = 1013.25,\n adjustments = {}\n } = config;\n\n if (!location) return Failure('Location is required');\n\n // Input Validation: Returns Failure instead of throwing\n const validation = validateInputs(location.latitude, location.longitude, date);\n if (!validation.success) return validation as any;\n\n // Internal Logic Conversions\n const asrFactor = madhab === 'Hanafi' ? 2 : 1;\n const ishaAngle = madhab === 'Hanafi' ? 18 : 12;\n\n try {\n const engine = createPrayerEngine({ ...location, elevation }, method);\n const result = engine.calculate(date, asrFactor, temperature, pressure, ishaAngle);\n \n if (result.success && Object.keys(adjustments).length > 0) {\n const times = result.data;\n const keys = ['fajr', 'sunrise', 'dhahwaKubra', 'dhuhr', 'asr', 'maghrib', 'isha'] as const;\n \n for (const key of keys) {\n if (adjustments[key] && !isNaN(times[key].getTime())) {\n times[key] = new Date(times[key].getTime() + adjustments[key]! * 60000);\n }\n }\n }\n \n return result;\n } catch (e) {\n return Failure(e instanceof Error ? e.message : 'Unknown error during calculation');\n }\n};\n","import { getPrayerTimes, PrayerConfig } from './index.js';\nimport { MonthlyPrayerRow, PrayerTimesResult } from './types/index.js';\nimport { Result, Success, Failure } from '../core/result.js';\n\n/**\n * Calculates prayer times for an entire month.\n */\nexport function getMonthlyPrayerTimes(\n year: number,\n month: number,\n config: Omit<PrayerConfig, 'date'>\n): Result<MonthlyPrayerRow[]> {\n const results: MonthlyPrayerRow[] = [];\n const daysInMonth = new Date(year, month, 0).getDate();\n\n for (let day = 1; day <= daysInMonth; day++) {\n const date = new Date(year, month - 1, day);\n const timesResult = getPrayerTimes({ ...config, date });\n \n if (!timesResult.success) {\n return Failure(`Failed to calculate times for day ${day}: ${timesResult.error}`);\n }\n\n const times = timesResult.data;\n results.push({\n ...times,\n date: date.toLocaleDateString(),\n day,\n weekday: date.toLocaleDateString('en-US', { weekday: 'long' })\n });\n }\n\n return Success(results);\n}\n","import { getPrayerTimes, PrayerConfig } from './index.js';\nimport { RamadanScheduleEntry } from './types/index.js';\nimport { Result, Success, Failure } from '../core/result.js';\n\n/**\n * Calculates Ramadan schedule (Sahar and Iftar times) for a date range.\n */\nexport function getRamadanSchedule(\n startDate: Date,\n endDate: Date,\n config: Omit<PrayerConfig, 'date'>,\n sahurBuffer: number = 0,\n iftarBuffer: number = 0\n): Result<RamadanScheduleEntry[]> {\n const results: RamadanScheduleEntry[] = [];\n const diffTime = Math.abs(endDate.getTime() - startDate.getTime());\n const diffDays = Math.ceil(diffTime / (1000 * 60 * 60 * 24));\n\n if (diffDays > 31) {\n return Failure('Date range cannot exceed 31 days.');\n }\n\n const current = new Date(startDate);\n while (current <= endDate) {\n const date = new Date(current);\n const timesResult = getPrayerTimes({ ...config, date });\n\n if (!timesResult.success) {\n return Failure(`Failed to calculate times for ${date.toLocaleDateString()}: ${timesResult.error}`);\n }\n\n const times = timesResult.data;\n results.push({\n date: date.toLocaleDateString(),\n day: date.getDate(),\n weekday: date.toLocaleDateString('en-US', { weekday: 'long' }),\n fajr: times.fajr,\n maghrib: times.maghrib,\n sahurEndsAt: new Date(times.fajr.getTime() - sahurBuffer * 60000),\n iftarAt: new Date(times.maghrib.getTime() + iftarBuffer * 60000)\n });\n\n current.setDate(current.getDate() + 1);\n }\n\n return Success(results);\n}\n"]}
@@ -0,0 +1,2 @@
1
+ 'use strict';var chunkH33IJIM5_cjs=require('./chunk-H33IJIM5.cjs'),chunkYSOESZ35_cjs=require('./chunk-YSOESZ35.cjs'),chunkYDSVFKVM_cjs=require('./chunk-YDSVFKVM.cjs'),chunkYMPRSR53_cjs=require('./chunk-YMPRSR53.cjs'),chunkYZUP33VG_cjs=require('./chunk-YZUP33VG.cjs'),chunk4JQOEJI5_cjs=require('./chunk-4JQOEJI5.cjs');function V(f,v="Karachi"){let i=f,M=v,u=(t,e)=>{let r=new Date(Date.UTC(t.getUTCFullYear(),t.getUTCMonth(),t.getUTCDate(),0,0,0));if(isNaN(e))return new Date(NaN);let n=Math.round(e*3600);return r.setUTCSeconds(n),r},N=t=>{let e=chunkYDSVFKVM_cjs.a(t),n=e+70/86400,a=(e-2451545)/36525,o=(n-2451545)/36525,s=.1*o,c=chunkYMPRSR53_cjs.h(o);return {solar:chunkYMPRSR53_cjs.i(e,c.deltaPsi,c.eps,o,s,a),jd:e}},p=t=>{let e=12-i.longitude/15;for(let r=0;r<3;r++){let n=u(t,e),{solar:a}=N(n);e=12-i.longitude/15-a.EOT/60;}return u(t,e)},b=(t,e,r)=>{let n=r==="morning"?6:18,a=n;for(let o=0;o<5;o++){let s=u(t,a),{solar:c}=N(s),m=chunkYMPRSR53_cjs.b(i.latitude)*chunkYMPRSR53_cjs.b(c.DEC);if(Math.abs(m)<1e-10)return new Date(NaN);let d=(chunkYMPRSR53_cjs.a(-e)-chunkYMPRSR53_cjs.a(i.latitude)*chunkYMPRSR53_cjs.a(c.DEC))/m;if(d>1||d<-1)return new Date(NaN);let T=chunkYMPRSR53_cjs.e(d)/15,h=12-i.longitude/15-c.EOT/60;if(a=r==="morning"?h-T:h+T,Math.abs(a-n)*3600<1)break;n=a;}return u(t,a)},R=(t,e)=>{let r=e==="morning"?6:18,n=r;for(let a=0;a<5;a++){let o=u(t,n),{solar:s}=N(o),c=34/60,m=s.SD/3600,d=s.HP/3600,T=i.elevation||0,h=.02933333*Math.sqrt(T),S=90+c+m-d+h,P=chunkYMPRSR53_cjs.b(i.latitude)*chunkYMPRSR53_cjs.b(s.DEC);if(Math.abs(P)<1e-10)return new Date(NaN);let D=(chunkYMPRSR53_cjs.b(S)-chunkYMPRSR53_cjs.a(i.latitude)*chunkYMPRSR53_cjs.a(s.DEC))/P;if(D>1||D<-1)return new Date(NaN);let E=chunkYMPRSR53_cjs.e(D)/15,A=12-i.longitude/15-s.EOT/60;if(n=e==="morning"?A-E:A+E,Math.abs(n-r)*3600<1)break;r=n;}return u(t,n)},C=(t,e,r,n,a)=>{let{solar:o}=N(r),s=Math.abs(i.latitude-o.DEC),c=o.SD/3600,m=chunkYSOESZ35_cjs.a(90-s,n,a)/60,d=s-m-c,T=15,h=T;for(let S=0;S<5;S++){let P=u(t,h),{solar:D}=N(P),E=chunkYMPRSR53_cjs.f(chunkYMPRSR53_cjs.c(d)+e,1),A=chunkYSOESZ35_cjs.a(90-E,n,a)/60,L=D.SD/3600,H=E+A+L,x=chunkYMPRSR53_cjs.b(i.latitude)*chunkYMPRSR53_cjs.b(D.DEC);if(Math.abs(x)<1e-10)return new Date(NaN);let k=(chunkYMPRSR53_cjs.b(H)-chunkYMPRSR53_cjs.a(i.latitude)*chunkYMPRSR53_cjs.a(D.DEC))/x;if(k>1||k<-1)return new Date(NaN);let Y=chunkYMPRSR53_cjs.e(k)/15;if(h=12-i.longitude/15-D.EOT/60+Y,Math.abs(h-T)*3600<1)break;T=h;}return u(t,h)};return {calculate:(t,e=2,r=10,n=1010,a)=>{try{let o=p(t),s=chunkH33IJIM5_cjs.a[M],c=b(t,s.fajrAngle,"morning"),m=R(t,"morning"),d=s.maghribInterval?new Date(m.getTime()+s.maghribInterval*6e4):s.maghribAngle?b(t,s.maghribAngle,"evening"):R(t,"evening"),T=a!==void 0?a:s.ishaAngle||18,h=s.ishaInterval?new Date(d.getTime()+s.ishaInterval*6e4):b(t,T,"evening"),S=C(t,e,o,r,n),P=isNaN(c.getTime())||isNaN(d.getTime())?new Date(NaN):new Date((c.getTime()+d.getTime())/2),D={fajr:c,sunrise:m,dhahwaKubra:P,dhuhr:o,asr:S,maghrib:d,isha:h};return isNaN(c.getTime())||isNaN(o.getTime())||isNaN(d.getTime())?chunkYZUP33VG_cjs.b("One or more prayer times could not be calculated for this location/date (astronomical edge case)."):chunkYZUP33VG_cjs.a(D)}catch(o){return chunkYZUP33VG_cjs.b(o instanceof Error?o.message:"Unknown calculation error")}}}}function W(f,v,i){let M=f,u=v,N=i,p=chunkYMPRSR53_cjs.a(M),b=chunkYMPRSR53_cjs.b(M),R=chunkYMPRSR53_cjs.a(u),C=chunkYMPRSR53_cjs.b(u),t=Math.hypot(b,p*chunkYMPRSR53_cjs.b(N));if(t<1e-12)return {angleP:NaN,sideZS:NaN};let e=C/t;e=Math.min(1,Math.max(-1,e));let r=chunkYMPRSR53_cjs.f(p*chunkYMPRSR53_cjs.b(N),b),n=chunkYMPRSR53_cjs.e(e),a=[r+n,r-n].map(chunkYMPRSR53_cjs.g).filter(m=>m>=-1e-12&&m<=180+1e-12);if(a.length===0)return {angleP:NaN,sideZS:NaN};let o=a[0],s=R*p;if(Math.abs(s)<1e-12)return {angleP:NaN,sideZS:NaN};let c=(chunkYMPRSR53_cjs.b(o)-C*b)/s;return c=Math.min(1,Math.max(-1,c)),{angleP:chunkYMPRSR53_cjs.e(c),sideZS:o}}function X(f,v,i=new Date,M=0,u=10,N=1010){let p=chunkYZUP33VG_cjs.c(f,v,i);if(!p.success)return chunkYZUP33VG_cjs.b(p.error);let b=G({latitude:f,longitude:v});if(!b.success)return chunkYZUP33VG_cjs.b(b.error);let R=b.data.bearing,t=V({latitude:f,longitude:v,elevation:M}).calculate(i,2,u,N);if(!t.success)return chunkYZUP33VG_cjs.b(t.error);let e=t.data.dhuhr,r=e.getUTCHours()+e.getUTCMinutes()/60+e.getUTCSeconds()/3600,n=chunkYDSVFKVM_cjs.a(e),a=(n-2451545)/36525,o=chunkYMPRSR53_cjs.h(a),c=chunkYMPRSR53_cjs.i(n,o.deltaPsi,o.eps,a,.1*a,a).DEC,m=90-f,d=90-c,T=[{name:"Qibla",value:0},{name:"Opposite",value:180},{name:"Right",value:90},{name:"Left",value:-90}],h=[];return T.forEach(S=>{let P=chunkYMPRSR53_cjs.g(R+S.value),{angleP:D}=W(m,d,P);if(!isNaN(D)){let E=D/15,A=P>180?r+E:r-E,L=new Date(e),H=Math.floor(A),x=Math.floor((A-H)*60),k=Math.floor(((A-H)*60-x)*60);L.setUTCHours(H,x,k),h.push({direction:S.name,bearing:P,time:L});}}),chunkYZUP33VG_cjs.a(h)}var _=21.422487,q=39.826206;function G(f){let v=chunkYZUP33VG_cjs.c(f.latitude,f.longitude);if(!v.success)return v;let i=f.latitude,M=f.longitude,u=chunkYMPRSR53_cjs.a(q-M),N=chunkYMPRSR53_cjs.b(i)*chunkYMPRSR53_cjs.c(_)-chunkYMPRSR53_cjs.a(i)*chunkYMPRSR53_cjs.b(q-M),p=chunkYMPRSR53_cjs.f(u,N);p<0&&(p+=360);let b=Math.log(chunkYMPRSR53_cjs.c(_/2+45)/chunkYMPRSR53_cjs.c(i/2+45)),R=(q-M)*Math.PI/180,C=chunkYMPRSR53_cjs.f(R,b);C<0&&(C+=360);let t=6371,e=(_-i)*Math.PI/180,r=(q-M)*Math.PI/180,n=chunk4JQOEJI5_cjs.a(Math.sin(e/2),2)+Math.cos(i*Math.PI/180)*Math.cos(_*Math.PI/180)*chunk4JQOEJI5_cjs.a(Math.sin(r/2),2),a=2*Math.atan2(Math.sqrt(n),Math.sqrt(1-n)),o=t*a;return chunkYZUP33VG_cjs.a({bearing:p,rhumbLine:C,distance:o})}exports.a=X;exports.b=G;//# sourceMappingURL=chunk-FQ6RGT3F.cjs.map
2
+ //# sourceMappingURL=chunk-FQ6RGT3F.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"sources":["../src/prayer/engine/index.ts","../src/qibla/sun-qibla.ts","../src/qibla/index.ts"],"names":["createPrayerEngine","coords","method","_coords","_method","toDate","baseDate","utcHours","d","totalSeconds","getSolarAt","date","jd","getJulianDate","jde","t","te","tau","nut","calculateNutation","calculateSolar","calculateTransit","currentUtcTime","i","checkDate","solar","solveIteratively","angleBelowHorizon","side","prevTime","denominator","cosd","cosH","sind","H","acosd","transit","solvePhenomenonIteratively","refraction","sd_deg","hp_deg","elevation","dip","targetZenith","solveAsrIteratively","factor","dhuhr","temperature","pressureMbar","solarZuhr","zZuhr","sdZuhr","refrZuhr","getRefraction","zZuhrVisual","zAsrVisual","atan2d","tand","refrAsr","sdAsr","asrFactor","ishaAngleOverride","params","PRESETS","fajr","sunrise","maghrib","ishaAngle","isha","asr","dhahwaKubra","results","Failure","Success","e","calculatePolarAngleP","PZdeg","PSdeg","Zdeg","c","b","B","sinC","cosC","sinBside","cosBside","R","x","alpha","delta","candidateSides","norm360","a","denom","cosP","calculateSunAtQibla","lat","lng","pressure","validation","validateInputs","qiblaResult","calculateQibla","baseDir","prayerTimesResult","zuhrDate","zuhrDecimal","sunDec","PZ","PS","offsets","offset","currentDir","angleP","timeOffset","finalTimeDecimal","time","hours","minutes","seconds","MAKKAH_LAT","MAKKAH_LNG","phi","lambda","y","qibla","dPhi","dLon","rhumb","dLat","dl","__pow","distance"],"mappings":"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","file":"chunk-FQ6RGT3F.cjs","sourcesContent":["/**\n * Core Prayer Time Engine.\n * Following strictly defined Successive Approximation Algorithmic Workflow.\n * Modularized and encapsulated using closures for privacy and small footprint.\n */\nimport { acosd, sind, cosd, tand, atan2d } from '../../core/math.js';\nimport { getRefraction } from '../../astronomy/refraction.js';\nimport { getJulianDate } from '../../core/time.js';\nimport { calculateNutation } from '../../astronomy/nutation.js';\nimport { calculateSolar, SolarResult } from '../../astronomy/solar.js';\nimport { Coordinates, CalculationMethod, PrayerTimesResult } from '../types/index.js';\nimport { PRESETS } from '../constants/methods.js';\nimport { Result, Success, Failure } from '../../core/result.js';\n\n/**\n * Creates a prayer engine instance.\n * @param coords Observer coordinates.\n * @param method Calculation method preset.\n */\nexport function createPrayerEngine(coords: Coordinates, method: CalculationMethod = 'Karachi') {\n // Private variables via closure\n const _coords = coords;\n const _method = method;\n\n /**\n * Internal helper to convert UTC hours to a Date object.\n */\n const toDate = (baseDate: Date, utcHours: number): Date => {\n const d = new Date(Date.UTC(baseDate.getUTCFullYear(), baseDate.getUTCMonth(), baseDate.getUTCDate(), 0, 0, 0));\n if (isNaN(utcHours)) return new Date(NaN);\n const totalSeconds = Math.round(utcHours * 3600);\n d.setUTCSeconds(totalSeconds);\n return d;\n };\n\n /**\n * Internal helper to get solar ephemeris at a specific date.\n */\n const getSolarAt = (date: Date): { solar: SolarResult, jd: number } => {\n const jd = getJulianDate(date);\n const dt = 70; // Fixed ΔT as requested in original logic\n const jde = jd + dt / 86400;\n const t = (jd - 2451545) / 36525;\n const te = (jde - 2451545) / 36525;\n const tau = 0.1 * te;\n const nut = calculateNutation(te);\n const solar = calculateSolar(jd, nut.deltaPsi, nut.eps, te, tau, t);\n return { solar, jd };\n };\n\n /**\n * Solves for solar transit (Noon).\n */\n const calculateTransit = (date: Date): Date => {\n let currentUtcTime = 12 - (_coords.longitude / 15);\n for (let i = 0; i < 3; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n currentUtcTime = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n }\n return toDate(date, currentUtcTime);\n };\n\n /**\n * Solves iteratively for a target zenith angle.\n */\n const solveIteratively = (date: Date, angleBelowHorizon: number, side: 'morning' | 'evening'): Date => {\n let prevTime = side === 'morning' ? 6 : 18;\n let currentUtcTime = prevTime;\n\n for (let i = 0; i < 5; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n const denominator = cosd(_coords.latitude) * cosd(solar.DEC);\n\n if (Math.abs(denominator) < 1e-10) return new Date(NaN);\n\n const cosH = (sind(-angleBelowHorizon) - sind(_coords.latitude) * sind(solar.DEC)) / denominator;\n if (cosH > 1 || cosH < -1) return new Date(NaN);\n\n const H = acosd(cosH) / 15;\n const transit = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n currentUtcTime = side === 'morning' ? transit - H : transit + H;\n\n if (Math.abs(currentUtcTime - prevTime) * 3600 < 1) break;\n prevTime = currentUtcTime;\n }\n return toDate(date, currentUtcTime);\n };\n\n /**\n * Solves iteratively for Sunrise/Maghrib (with refraction and SD).\n */\n const solvePhenomenonIteratively = (date: Date, side: 'morning' | 'evening'): Date => {\n let prevTime = side === 'morning' ? 6 : 18;\n let currentUtcTime = prevTime;\n\n for (let i = 0; i < 5; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n const refraction = 34 / 60;\n const sd_deg = solar.SD / 3600;\n const hp_deg = solar.HP / 3600;\n const elevation = _coords.elevation || 0;\n const dip = 0.02933333 * Math.sqrt(elevation);\n\n const targetZenith = 90 + refraction + sd_deg - hp_deg + dip;\n const denominator = cosd(_coords.latitude) * cosd(solar.DEC);\n\n if (Math.abs(denominator) < 1e-10) return new Date(NaN);\n\n const cosH = (cosd(targetZenith) - sind(_coords.latitude) * sind(solar.DEC)) / denominator;\n if (cosH > 1 || cosH < -1) return new Date(NaN);\n\n const H = acosd(cosH) / 15;\n const transit = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n currentUtcTime = side === 'morning' ? transit - H : transit + H;\n\n if (Math.abs(currentUtcTime - prevTime) * 3600 < 1) break;\n prevTime = currentUtcTime;\n }\n return toDate(date, currentUtcTime);\n };\n\n /**\n * Solves iteratively for Asr.\n */\n const solveAsrIteratively = (date: Date, factor: number, dhuhr: Date, temperature: number, pressureMbar: number): Date => {\n const { solar: solarZuhr } = getSolarAt(dhuhr);\n const zZuhr = Math.abs(_coords.latitude - solarZuhr.DEC);\n const sdZuhr = solarZuhr.SD / 3600;\n const refrZuhr = getRefraction(90 - zZuhr, temperature, pressureMbar) / 60;\n const zZuhrVisual = zZuhr - refrZuhr - sdZuhr;\n\n let prevTime = 15;\n let currentUtcTime = prevTime;\n\n for (let i = 0; i < 5; i++) {\n const checkDate = toDate(date, currentUtcTime);\n const { solar } = getSolarAt(checkDate);\n const zAsrVisual = atan2d(tand(zZuhrVisual) + factor, 1);\n const refrAsr = getRefraction(90 - zAsrVisual, temperature, pressureMbar) / 60;\n const sdAsr = solar.SD / 3600;\n const targetZenith = zAsrVisual + refrAsr + sdAsr;\n\n const denominator = cosd(_coords.latitude) * cosd(solar.DEC);\n if (Math.abs(denominator) < 1e-10) return new Date(NaN);\n\n const cosH = (cosd(targetZenith) - sind(_coords.latitude) * sind(solar.DEC)) / denominator;\n if (cosH > 1 || cosH < -1) return new Date(NaN);\n\n const H = acosd(cosH) / 15;\n const transit = 12 - (_coords.longitude / 15) - (solar.EOT / 60);\n currentUtcTime = transit + H;\n\n if (Math.abs(currentUtcTime - prevTime) * 3600 < 1) break;\n prevTime = currentUtcTime;\n }\n return toDate(date, currentUtcTime);\n };\n\n // Exposed API\n return {\n /**\n * Calculates prayer times for a given date.\n * Returns a Result object for robust error handling.\n */\n calculate: (\n date: Date,\n asrFactor: number = 2,\n temperature: number = 10,\n pressureMbar: number = 1010.0,\n ishaAngleOverride?: number\n ): Result<PrayerTimesResult> => {\n try {\n const dhuhr = calculateTransit(date);\n const params = PRESETS[_method];\n\n const fajr = solveIteratively(date, params.fajrAngle, 'morning');\n const sunrise = solvePhenomenonIteratively(date, 'morning');\n\n const maghrib = params.maghribInterval\n ? new Date(sunrise.getTime() + params.maghribInterval * 60000)\n : params.maghribAngle\n ? solveIteratively(date, params.maghribAngle, 'evening')\n : solvePhenomenonIteratively(date, 'evening');\n\n const ishaAngle = ishaAngleOverride !== undefined ? ishaAngleOverride : (params.ishaAngle || 18);\n const isha = params.ishaInterval\n ? new Date(maghrib.getTime() + params.ishaInterval * 60000)\n : solveIteratively(date, ishaAngle, 'evening');\n\n // Asr Calculation following the requested 6-step workflow:\n // 1. Angular distance of sun from zenith at noon\n // 2. Adjust to visual position (semi-diameter and refraction)\n // 3. Assign factor (1 for Shafi, 2 for Hanafi)\n // 4. Calculate target visual zenith angle\n // 5. Convert back to geometric target zenith\n // 6. Successive Approximation loop (inside solveAsrIteratively)\n const asr = solveAsrIteratively(date, asrFactor, dhuhr, temperature, pressureMbar);\n\n const dhahwaKubra = (isNaN(fajr.getTime()) || isNaN(maghrib.getTime()))\n ? new Date(NaN)\n : new Date((fajr.getTime() + maghrib.getTime()) / 2);\n\n const results: PrayerTimesResult = { fajr, sunrise, dhahwaKubra, dhuhr, asr, maghrib, isha };\n\n // Verify if any critical time is NaN\n if (isNaN(fajr.getTime()) || isNaN(dhuhr.getTime()) || isNaN(maghrib.getTime())) {\n return Failure('One or more prayer times could not be calculated for this location/date (astronomical edge case).');\n }\n\n return Success(results);\n } catch (e) {\n return Failure(e instanceof Error ? e.message : 'Unknown calculation error');\n }\n }\n };\n}\n","import { sind, cosd, acosd, atan2d, norm360 } from '../core/math.js';\nimport { calculateSolar } from '../astronomy/solar.js';\nimport { calculateNutation } from '../astronomy/nutation.js';\nimport { getJulianDate } from '../core/time.js';\nimport { createPrayerEngine } from '../prayer/engine/index.js';\nimport { calculateQibla } from './index.js';\nimport { Result, Success, Failure, validateInputs } from '../core/result.js';\n\n/**\n * Calculates the Polar Angle P for a spherical triangle.\n */\nfunction calculatePolarAngleP(PZdeg: number, PSdeg: number, Zdeg: number) {\n const c = PZdeg;\n const b = PSdeg;\n const B = Zdeg;\n\n const sinC = sind(c);\n const cosC = cosd(c);\n const sinBside = sind(b);\n const cosBside = cosd(b);\n\n const R = Math.hypot(cosC, sinC * cosd(B));\n if (R < 1e-12) return { angleP: NaN, sideZS: NaN };\n\n let x = cosBside / R;\n x = Math.min(1, Math.max(-1, x));\n\n const alpha = atan2d(sinC * cosd(B), cosC);\n const delta = acosd(x);\n\n const candidateSides = [alpha + delta, alpha - delta]\n .map(norm360)\n .filter((a) => a >= -1e-12 && a <= 180 + 1e-12);\n\n if (candidateSides.length === 0) return { angleP: NaN, sideZS: NaN };\n\n const a = candidateSides[0];\n const denom = sinBside * sinC;\n if (Math.abs(denom) < 1e-12) return { angleP: NaN, sideZS: NaN };\n\n let cosP = (cosd(a) - cosBside * cosC) / denom;\n cosP = Math.min(1, Math.max(-1, cosP));\n\n return {\n angleP: acosd(cosP),\n sideZS: a,\n };\n}\n\n/**\n * Calculates when the Sun will be at the Qibla direction, opposite, and sides.\n */\nexport function calculateSunAtQibla(\n lat: number, \n lng: number, \n date: Date = new Date(),\n elevation: number = 0,\n temperature: number = 10,\n pressure: number = 1010\n): Result<{ direction: string; bearing: number; time: Date }[]> {\n const validation = validateInputs(lat, lng, date);\n if (!validation.success) return Failure(validation.error);\n\n // 1. Get Qibla Direction\n const qiblaResult = calculateQibla({ latitude: lat, longitude: lng });\n if (!qiblaResult.success) return Failure(qiblaResult.error);\n const baseDir = qiblaResult.data.bearing;\n\n // 2. Get Zuhr Time (Solar Noon)\n const engine = createPrayerEngine({ latitude: lat, longitude: lng, elevation });\n const prayerTimesResult = engine.calculate(date, 2, temperature, pressure);\n if (!prayerTimesResult.success) return Failure(prayerTimesResult.error);\n const zuhrDate = prayerTimesResult.data.dhuhr;\n\n const zuhrDecimal = zuhrDate.getUTCHours() + zuhrDate.getUTCMinutes() / 60 + zuhrDate.getUTCSeconds() / 3600;\n\n // 3. Get Solar Declination at Zuhr time\n const jd = getJulianDate(zuhrDate);\n const te = (jd - 2451545) / 36525;\n const nut = calculateNutation(te);\n const solar = calculateSolar(jd, nut.deltaPsi, nut.eps, te, 0.1 * te, te);\n const sunDec = solar.DEC;\n\n const PZ = 90 - lat;\n const PS = 90 - sunDec;\n\n const offsets = [\n { name: 'Qibla', value: 0 },\n { name: 'Opposite', value: 180 },\n { name: 'Right', value: 90 },\n { name: 'Left', value: -90 }\n ] as const;\n\n const results: { direction: string; bearing: number; time: Date }[] = [];\n\n offsets.forEach((offset) => {\n const currentDir = norm360(baseDir + offset.value);\n const { angleP } = calculatePolarAngleP(PZ, PS, currentDir);\n\n if (!isNaN(angleP)) {\n const timeOffset = angleP / 15;\n const finalTimeDecimal = currentDir > 180 ? zuhrDecimal + timeOffset : zuhrDecimal - timeOffset;\n\n const time = new Date(zuhrDate);\n const hours = Math.floor(finalTimeDecimal);\n const minutes = Math.floor((finalTimeDecimal - hours) * 60);\n const seconds = Math.floor(((finalTimeDecimal - hours) * 60 - minutes) * 60);\n\n time.setUTCHours(hours, minutes, seconds);\n\n results.push({\n direction: offset.name,\n bearing: currentDir,\n time: time\n });\n }\n });\n\n return Success(results);\n}\n","import { atan2d, cosd, sind, tand } from '../core/math.js';\nimport { Coordinates } from '../prayer/types/index.js';\nimport { Result, validateInputs, Success } from '../core/result.js';\n\nconst MAKKAH_LAT = 21.42248700;\nconst MAKKAH_LNG = 39.82620600;\n\nexport interface QiblaResult {\n bearing: number;\n rhumbLine: number;\n distance: number;\n}\n\n/**\n * Calculates the direction to the Kaaba (Qibla) from a given coordinate.\n */\nexport function calculateQibla(coords: Coordinates): Result<QiblaResult> {\n const validation = validateInputs(coords.latitude, coords.longitude);\n if (!validation.success) return validation as any;\n\n const phi = coords.latitude;\n const lambda = coords.longitude;\n\n const y = sind(MAKKAH_LNG - lambda);\n const x = cosd(phi) * tand(MAKKAH_LAT) - sind(phi) * cosd(MAKKAH_LNG - lambda);\n\n let qibla = atan2d(y, x);\n if (qibla < 0) qibla += 360;\n\n // Rhumb Line calculation (loxodromic)\n const dPhi = Math.log(tand(MAKKAH_LAT / 2 + 45) / tand(phi / 2 + 45));\n const dLon = (MAKKAH_LNG - lambda) * Math.PI / 180;\n let rhumb = atan2d(dLon, dPhi);\n if (rhumb < 0) rhumb += 360;\n\n // Haversine Distance\n const R = 6371;\n const dLat = (MAKKAH_LAT - phi) * Math.PI / 180;\n const dl = (MAKKAH_LNG - lambda) * Math.PI / 180;\n const a = Math.sin(dLat / 2) ** 2 + Math.cos(phi * Math.PI / 180) * Math.cos(MAKKAH_LAT * Math.PI / 180) * Math.sin(dl / 2) ** 2;\n const c = 2 * Math.atan2(Math.sqrt(a), Math.sqrt(1 - a));\n const distance = R * c;\n\n return Success({\n bearing: qibla,\n rhumbLine: rhumb,\n distance: distance\n });\n}\n\nexport { calculateSunAtQibla } from './sun-qibla.js';\n"]}
@@ -0,0 +1,2 @@
1
+ var p=Math.PI/180,w=180/Math.PI,M=s=>Math.sin(p*s),A=s=>Math.cos(p*s),k=s=>Math.tan(p*s),q=s=>Math.asin(s)*w,T=s=>Math.acos(s)*w,v=(s,b)=>Math.atan2(s,b)*w,m=s=>{let b=s%360;return b<0&&(b+=360),b};var z=[[0,0,0,0,1,-171996,-174.2,92025,8.9],[0,0,2,-2,2,-13187,-1.6,5736,-3.1],[0,0,2,0,2,-2274,-0.2,977,-0.5],[0,0,0,0,2,2062,.2,-895,.5],[0,-1,0,0,0,-1426,3.4,54,-0.1],[1,0,0,0,0,712,.1,-7,0],[0,1,2,-2,2,-517,1.2,224,-0.6],[0,0,2,0,1,-386,-0.4,200,0],[1,0,2,0,2,-301,0,129,-0.1],[0,-1,2,-2,2,217,-0.5,-95,.3],[-1,0,0,2,0,158,0,-1,0],[0,0,2,-2,1,129,.1,-70,0],[-1,0,2,0,2,123,0,-53,0],[1,0,0,0,1,63,.1,-33,0],[0,0,0,2,0,63,0,-2,0],[-1,0,2,2,2,-59,0,26,0],[-1,0,0,0,1,-58,-0.1,32,0],[1,0,2,0,1,-51,0,27,0],[-2,0,0,2,0,-48,0,1,0],[-2,0,2,0,1,46,0,-24,0],[0,0,2,2,2,-38,0,16,0],[2,0,2,0,2,-31,0,13,0],[2,0,0,0,0,29,0,-1,0],[1,0,2,-2,2,29,0,-12,0],[0,0,2,0,0,26,0,-1,0],[0,0,2,-2,0,-22,0,0,0],[-1,0,2,0,1,21,0,-10,0],[0,2,0,0,0,17,-0.1,0,0],[0,2,2,-2,2,-16,.1,7,0],[-1,0,0,2,1,16,0,-8,0],[0,1,0,0,1,-15,0,9,0],[1,0,0,-2,1,-13,0,7,0],[0,-1,0,0,1,-12,0,6,0],[2,0,-2,0,0,11,0,0,0],[-1,0,2,2,1,-10,0,5,0],[1,0,2,2,2,-8,0,3,0],[0,-1,2,0,2,-7,0,3,0],[0,0,2,2,1,-7,0,3,0],[1,1,0,-2,0,-7,0,0,0],[0,1,2,0,2,7,0,-3,0],[-2,0,0,2,1,-6,0,3,0],[0,0,0,2,1,-6,0,3,0],[2,0,2,-2,2,6,0,-3,0],[1,0,0,2,0,6,0,0,0],[1,0,2,-2,1,6,0,-3,0],[0,0,0,-2,1,-5,0,3,0],[0,-1,2,-2,1,-5,0,3,0],[2,0,2,0,1,-5,0,3,0],[1,-1,0,0,0,5,0,0,0],[1,0,0,-1,0,-4,0,0,0],[0,0,0,1,0,-4,0,0,0],[0,1,0,-2,0,-4,0,0,0],[1,0,-2,0,0,4,0,0,0],[2,0,0,-2,1,4,0,-2,0],[0,1,2,-2,1,4,0,-2,0],[1,1,0,0,0,-3,0,0,0],[1,-1,0,-1,0,-3,0,0,0],[-1,-1,2,2,2,-3,0,1,0],[0,-1,2,2,2,-3,0,1,0],[1,-1,2,0,2,-3,0,1,0],[3,0,2,0,2,-3,0,1,0],[-2,0,2,0,2,-3,0,1,0],[1,0,2,0,0,3,0,0,0],[-1,0,2,4,2,-2,0,1,0],[1,0,0,0,2,-2,0,1,0],[-1,0,2,-2,1,-2,0,1,0],[0,-2,2,-2,1,-2,0,1,0],[-2,0,0,0,1,-2,0,1,0],[2,0,0,0,1,2,0,-1,0],[3,0,0,0,0,2,0,0,0],[1,1,2,0,2,2,0,-1,0],[0,0,2,1,2,2,0,-1,0],[1,0,0,2,1,-1,0,0,0],[1,0,2,2,1,-1,0,1,0],[1,1,0,-2,1,-1,0,0,0],[0,1,0,2,0,-1,0,0,0],[0,1,2,-2,0,-1,0,0,0],[0,1,-2,2,0,-1,0,0,0],[1,0,-2,2,0,-1,0,0,0],[1,0,-2,-2,0,-1,0,0,0],[1,0,2,-2,0,-1,0,0,0],[1,0,0,-4,0,-1,0,0,0],[2,0,0,-4,0,-1,0,0,0],[0,0,2,4,2,-1,0,0,0],[0,0,2,-1,2,-1,0,0,0],[-2,0,2,4,2,-1,0,1,0],[2,0,2,2,2,-1,0,0,0],[0,-1,2,0,1,-1,0,0,0],[0,0,-2,0,1,-1,0,0,0],[0,0,4,-2,2,1,0,0,0],[0,1,0,0,2,1,0,0,0],[1,1,2,-2,2,1,0,-1,0],[3,0,2,-2,2,1,0,0,0],[-2,0,2,2,2,1,0,-1,0],[-1,0,0,0,2,1,0,-1,0],[0,0,-2,2,1,1,0,0,0],[0,1,2,0,1,1,0,0,0],[-1,0,4,0,2,1,0,0,0],[2,1,0,-2,0,1,0,0,0],[2,0,0,2,0,1,0,0,0],[2,0,2,-2,1,1,0,-1,0],[2,0,-2,0,1,1,0,0,0],[1,-1,0,-2,0,1,0,0,0],[-1,0,0,1,1,1,0,0,0],[-1,-1,0,2,1,1,0,0,0],[0,1,0,1,0,1,0,0,0]];function e0(s){let b=s*s,i=b*s,R=m(134.962981389+198.867398056*s+m(477e3*s)+.008697222222*b+i/56250)*p,t=m(357.527723333+359.05034*s+m(35640*s)-.0001602777778*b-i/3e5)*p,x=m(93.271910277+82.017538055*s+m(483120*s)-.0036825*b+i/327272.7273)*p,n=m(297.850363055+307.11148*s+m(444960*s)-.001914166667*b+i/189473.6842)*p,e=m(125.044522222-134.136260833*s-m(1800*s)+.002070833333*b+i/45e4)*p,o=0,c=0;for(let h=0;h<z.length;h++){let l=z[h],H=l[3]*n+l[1]*t+l[0]*R+l[2]*x+l[4]*e,S=Math.sin(H),N=Math.cos(H);o+=(l[5]+s*l[6])*S,c+=(l[7]+s*l[8])*N;}let G=o/36e6,I=c/36e6,L=(84381.448-46.815*s-59e-5*b+.001813*i)/3600,f=L+I;return {deltaPsi:G,deltaEps:I,eps0:L,eps:f}}function s0(s,b,i,R,t,x){let{cos:n}=Math,e=175347046;e+=3341656*n(4.6692568+6283.07585*t),e+=34894*n(4.6261+12566.1517*t),e+=3497*n(2.7441+5753.3849*t),e+=3418*n(2.8289+3.5231*t),e+=3136*n(3.6277+77713.7715*t),e+=2676*n(4.4181+7860.4194*t),e+=2343*n(6.1352+3930.2097*t),e+=1324*n(.7425+11506.7698*t),e+=1273*n(2.0371+529.691*t),e+=1199*n(1.1096+1577.3435*t),e+=990*n(5.233+5884.927*t),e+=902*n(2.045+26.298*t),e+=857*n(3.508+398.149*t),e+=780*n(1.179+5223.694*t),e+=753*n(2.533+5507.553*t),e+=505*n(4.583+18849.228*t),e+=492*n(4.205+775.523*t),e+=357*n(2.92+.067*t),e+=317*n(5.849+11790.629*t),e+=284*n(1.899+796.298*t),e+=271*n(.315+10977.079*t),e+=243*n(.345+5486.778*t),e+=206*n(4.806+2544.314*t),e+=205*n(1.869+5573.143*t),e+=202*n(2.458+6069.777*t),e+=156*n(.833+213.299*t),e+=132*n(3.411+2942.463*t),e+=126*n(1.083+20.775*t),e+=115*n(.645+.98*t),e+=103*n(.636+4694.003*t),e+=102*n(.976+15720.839*t),e+=102*n(4.267+7.114*t),e+=99*n(6.21+2146.17*t),e+=98*n(.68+155.42*t),e+=86*n(5.98+161000.69*t),e+=85*n(1.3+6275.96*t),e+=85*n(3.67+71430.7*t),e+=80*n(1.81+17260.15*t),e+=79*n(3.04+12036.46*t),e+=75*n(1.76+5088.63*t),e+=74*n(3.5+3154.69*t),e+=74*n(4.68+801.82*t),e+=70*n(.83+9437.76*t),e+=62*n(3.98+8827.39*t),e+=61*n(1.82+7084.9*t),e+=57*n(2.78+6286.6*t),e+=56*n(4.39+14143.5*t),e+=56*n(3.47+6279.55*t),e+=52*n(.19+12139.55*t),e+=52*n(1.33+1748.02*t),e+=51*n(.28+5856.48*t),e+=49*n(.49+1194.45*t),e+=41*n(5.37+8429.24*t),e+=41*n(2.4+19651.05*t),e+=39*n(6.17+10447.39*t),e+=37*n(6.04+10213.29*t),e+=37*n(2.57+1059.38*t),e+=36*n(1.71+2352.87*t),e+=36*n(1.78+6812.77*t),e+=33*n(.59+17789.85*t),e+=30*n(.44+83996.85*t),e+=30*n(2.74+1349.87*t),e+=25*n(3.16+4690.48*t);let o=628331966747;o+=206059*n(2.678235+6283.07585*t),o+=4303*n(2.6351+12566.1517*t),o+=425*n(1.59+3.523*t),o+=119*n(5.796+26.298*t),o+=109*n(2.966+1577.344*t),o+=93*n(2.59+18849.23*t),o+=72*n(1.14+529.69*t),o+=68*n(1.87+398.15*t),o+=67*n(4.41+5507.55*t),o+=59*n(2.89+5223.69*t),o+=56*n(2.17+155.42*t),o+=45*n(.4+796.3*t),o+=36*n(.47+775.52*t),o+=29*n(2.65+7.11*t),o+=21*n(5.34+.98*t),o+=19*n(1.85+5486.78*t),o+=19*n(4.97+213.3*t),o+=17*n(2.99+6275.96*t),o+=16*n(.03+2544.31*t),o+=16*n(1.43+2146.17*t),o+=15*n(1.21+10977.08*t),o+=12*n(2.83+1748.02*t),o+=12*n(3.26+5088.63*t),o+=12*n(5.27+1194.45*t),o+=12*n(2.08+4694*t),o+=11*n(.77+553.57*t),o+=10*n(1.3+6286.6*t),o+=10*n(4.24+1349.87*t),o+=9*n(2.7+242.73*t),o+=9*n(5.64+951.72*t),o+=8*n(5.3+2352.87*t),o+=6*n(2.65+9437.76*t),o+=6*n(4.67+4690.48*t);let c=52919;c+=8720*n(1.0721+6283.0758*t),c+=309*n(.867+12566.152*t),c+=27*n(.05+3.52*t),c+=16*n(5.19+26.3*t),c+=16*n(3.68+155.42*t),c+=10*n(.76+18849.23*t),c+=9*n(2.06+77713.77*t),c+=7*n(.83+775.52*t),c+=5*n(4.66+1577.34*t),c+=4*n(1.03+7.11*t),c+=4*n(3.44+5573.14*t),c+=3*n(5.14+796.3*t),c+=3*n(6.05+5507.55*t),c+=3*n(1.19+242.73*t),c+=3*n(6.12+529.69*t),c+=3*n(.31+398.15*t),c+=3*n(2.28+553.57*t),c+=2*n(4.38+5223.69*t),c+=2*n(3.75+.98*t);let G=289*n(5.844+6283.076*t)+35+17*n(5.49+12566.15*t)+3*n(5.2+155.42*t)+n(4.72+3.52*t)+n(5.3+18849.23*t)+n(5.97+242.73*t),I=114*n(Math.PI)+8*n(4.13+6283.08*t)+n(3.84+12566.15*t),L=n(3.14),f=t*t,h=f*t,l=h*t,H=l*t,S=m((e+o*t+c*f+G*h+I*l+L*H)/1e8/(Math.PI/180)),N=m(S+180-25e-6),P=280*n(3.199+84334.662*t);P+=102*n(5.422+5507.553*t),P+=80*n(3.88+5223.69*t),P+=44*n(3.7+2352.87*t),P+=32*n(4+1577.34*t);let J=9*n(3.9+5507.55*t)+6*n(1.73+5223.69*t),K=(P+J*t)/1e8/(Math.PI/180),B=m(-K);B>180&&(B-=360);let r=100013989;r+=1670700*n(3.0984635+6283.07585*t),r+=13956*n(3.05525+12566.1517*t),r+=3084*n(5.1985+77713.7715*t),r+=1628*n(1.1739+5753.3849*t),r+=1576*n(2.8469+7860.4194*t),r+=925*n(5.453+11506.77*t),r+=542*n(4.564+3930.21*t),r+=472*n(3.661+5884.927*t),r+=346*n(.964+5507.553*t),r+=329*n(5.9+5223.694*t),r+=307*n(.299+5573.143*t),r+=243*n(4.273+11790.629*t),r+=212*n(5.847+1577.344*t),r+=186*n(5.022+10977.079*t),r+=175*n(3.012+18849.228*t),r+=110*n(5.055+5486.778*t),r+=98*n(.89+6069.78*t),r+=86*n(5.69+15720.84*t),r+=86*n(1.27+161000.69*t),r+=65*n(.27+17260.15*t),r+=63*n(.92+529.69*t),r+=57*n(2.01+83996.85*t),r+=56*n(5.24+71430.7*t),r+=49*n(3.25+2544.31*t),r+=47*n(2.58+775.52*t),r+=45*n(5.54+9437.76*t),r+=43*n(6.01+6275.96*t),r+=39*n(5.36+4694*t),r+=38*n(2.39+8827.39*t),r+=37*n(.83+19651.05*t),r+=37*n(4.9+12139.55*t),r+=36*n(1.67+12036.46*t),r+=35*n(1.84+2942.46*t),r+=33*n(.24+7084.9*t),r+=32*n(.18+5088.63*t),r+=32*n(1.78+398.15*t),r+=28*n(1.21+6286.6*t),r+=28*n(1.9+6279.55*t),r+=26*n(4.59+10447.39*t);let d=103019*n(1.10749+6283.07585*t);d+=1721*n(1.0644+12566.1517*t),d+=702*n(Math.PI),d+=32*n(1.02+18849.23*t),d+=31*n(2.84+5507.55*t),d+=25*n(1.32+5223.69*t),d+=18*n(1.42+1577.34*t),d+=10*n(5.91+10977.08*t),d+=9*n(1.42+6275.96*t),d+=9*n(.27+5486.78*t);let Q=4359*n(5.7846+6283.0758*t)+124*n(5.579+12566.152*t)+12*n(Math.PI)+9*n(3.63+77713.77*t)+6*n(1.87+5573.14*t)+3*n(5.47+18849.23*t),V=145*n(4.273+6283.076*t)+7*n(3.92+12566.15*t),W=4*n(2.56+6283.08*t),_=(r+d*t+Q*f+V*h+W*l)/1e8,y=m(S+180-1.397*R-31e-5*R*R),C=B+11e-6*(n(y*(Math.PI/180))-M(y*(Math.PI/180))),g=m(N+b-.005691611/_),O=m(v(M(g)*A(i)-k(C)*M(i),A(g))),X=m(360-O),Y=q(M(C)*A(i)+A(C)*M(i)*M(g)),F=x*x,Z=F*x,$=m(280.46061837+360.98564736629*(s-2451545)+387933e-9*F-Z/3871e4),j=m($+b*A(i)),U=m(j-O),E=959.63/_,a=8.794/_,u=(s+.5)%1,D=4*U+720-1440*u;return D>20&&(D-=1440),D<-20&&(D+=1440),{RA:O,DEC:Y,GHA:U,SHA:X,SD:E,HP:a,EOT:D,distance:_,lambdaApp:g}}export{M as a,A as b,k as c,q as d,T as e,v as f,m as g,e0 as h,s0 as i};//# sourceMappingURL=chunk-FTWK5BZJ.js.map
2
+ //# sourceMappingURL=chunk-FTWK5BZJ.js.map