@aibrains/shared-types 0.14.0 → 0.16.0

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 (108) hide show
  1. package/dist/events/enrollment-billing.events.d.ts +47 -0
  2. package/dist/events/enrollment-billing.events.d.ts.map +1 -0
  3. package/dist/events/enrollment-billing.events.js +9 -0
  4. package/dist/events/enrollment-billing.events.js.map +1 -0
  5. package/dist/identity/country-config.d.ts +120 -0
  6. package/dist/identity/country-config.d.ts.map +1 -0
  7. package/dist/identity/country-config.js +404 -0
  8. package/dist/identity/country-config.js.map +1 -0
  9. package/dist/identity/field-governance.d.ts +40 -0
  10. package/dist/identity/field-governance.d.ts.map +1 -0
  11. package/dist/identity/field-governance.js +111 -0
  12. package/dist/identity/field-governance.js.map +1 -0
  13. package/dist/index.d.ts +6 -1
  14. package/dist/index.d.ts.map +1 -1
  15. package/dist/index.js +9 -1
  16. package/dist/index.js.map +1 -1
  17. package/dist/mappers/edfi/education-org.mapper.js +3 -3
  18. package/dist/mappers/edfi/education-org.mapper.js.map +1 -1
  19. package/dist/schemas/academics/assignment.schema.d.ts +10 -10
  20. package/dist/schemas/academics/attendance.schema.d.ts +16 -16
  21. package/dist/schemas/academics/classwork.schema.d.ts +4 -4
  22. package/dist/schemas/academics/grade.schema.d.ts +2 -2
  23. package/dist/schemas/academics/index.d.ts +1 -0
  24. package/dist/schemas/academics/index.d.ts.map +1 -1
  25. package/dist/schemas/academics/index.js +1 -0
  26. package/dist/schemas/academics/index.js.map +1 -1
  27. package/dist/schemas/academics/section-attendance.schema.d.ts +447 -0
  28. package/dist/schemas/academics/section-attendance.schema.d.ts.map +1 -0
  29. package/dist/schemas/academics/section-attendance.schema.js +126 -0
  30. package/dist/schemas/academics/section-attendance.schema.js.map +1 -0
  31. package/dist/schemas/academics/student.schema.d.ts +15 -15
  32. package/dist/schemas/common.d.ts +4 -2
  33. package/dist/schemas/common.d.ts.map +1 -1
  34. package/dist/schemas/common.js +7 -2
  35. package/dist/schemas/common.js.map +1 -1
  36. package/dist/schemas/enrollment/enrollment.schema.d.ts +55 -55
  37. package/dist/schemas/finance/common.d.ts +1 -1
  38. package/dist/schemas/finance/common.d.ts.map +1 -1
  39. package/dist/schemas/finance/common.js +1 -1
  40. package/dist/schemas/finance/common.js.map +1 -1
  41. package/dist/schemas/finance/credit-note.schema.d.ts +127 -0
  42. package/dist/schemas/finance/credit-note.schema.d.ts.map +1 -0
  43. package/dist/schemas/finance/credit-note.schema.js +55 -0
  44. package/dist/schemas/finance/credit-note.schema.js.map +1 -0
  45. package/dist/schemas/finance/discount-rule.schema.d.ts +352 -0
  46. package/dist/schemas/finance/discount-rule.schema.d.ts.map +1 -0
  47. package/dist/schemas/finance/discount-rule.schema.js +57 -0
  48. package/dist/schemas/finance/discount-rule.schema.js.map +1 -0
  49. package/dist/schemas/finance/fee-structure.schema.d.ts +40 -10
  50. package/dist/schemas/finance/fee-structure.schema.d.ts.map +1 -1
  51. package/dist/schemas/finance/fee-structure.schema.js +10 -0
  52. package/dist/schemas/finance/fee-structure.schema.js.map +1 -1
  53. package/dist/schemas/finance/index.d.ts +3 -0
  54. package/dist/schemas/finance/index.d.ts.map +1 -1
  55. package/dist/schemas/finance/index.js +3 -0
  56. package/dist/schemas/finance/index.js.map +1 -1
  57. package/dist/schemas/finance/invoice.schema.d.ts +68 -8
  58. package/dist/schemas/finance/invoice.schema.d.ts.map +1 -1
  59. package/dist/schemas/finance/invoice.schema.js +10 -1
  60. package/dist/schemas/finance/invoice.schema.js.map +1 -1
  61. package/dist/schemas/finance/payment.schema.d.ts +38 -22
  62. package/dist/schemas/finance/payment.schema.d.ts.map +1 -1
  63. package/dist/schemas/finance/payment.schema.js +2 -0
  64. package/dist/schemas/finance/payment.schema.js.map +1 -1
  65. package/dist/schemas/finance/refund.schema.d.ts +99 -0
  66. package/dist/schemas/finance/refund.schema.d.ts.map +1 -0
  67. package/dist/schemas/finance/refund.schema.js +47 -0
  68. package/dist/schemas/finance/refund.schema.js.map +1 -0
  69. package/dist/schemas/identity/academic-year.schema.d.ts +14 -14
  70. package/dist/schemas/identity/bell-schedule.schema.d.ts +5 -5
  71. package/dist/schemas/identity/calendar-date.schema.d.ts +12 -12
  72. package/dist/schemas/identity/credential.schema.d.ts +4 -4
  73. package/dist/schemas/identity/department.schema.d.ts +6 -6
  74. package/dist/schemas/identity/education-org-network.schema.d.ts +7 -7
  75. package/dist/schemas/identity/education-organization.schema.d.ts +1 -1
  76. package/dist/schemas/identity/education-service-center.schema.d.ts +4 -4
  77. package/dist/schemas/identity/index.d.ts +2 -0
  78. package/dist/schemas/identity/index.d.ts.map +1 -1
  79. package/dist/schemas/identity/index.js +4 -0
  80. package/dist/schemas/identity/index.js.map +1 -1
  81. package/dist/schemas/identity/leave.schema.d.ts +34 -34
  82. package/dist/schemas/identity/local-education-agency.schema.d.ts +4 -4
  83. package/dist/schemas/identity/school-year.schema.d.ts +18 -18
  84. package/dist/schemas/identity/school.schema.d.ts +613 -124
  85. package/dist/schemas/identity/school.schema.d.ts.map +1 -1
  86. package/dist/schemas/identity/school.schema.js +32 -8
  87. package/dist/schemas/identity/school.schema.js.map +1 -1
  88. package/dist/schemas/identity/staff-assignment.schema.d.ts +3 -3
  89. package/dist/schemas/identity/staff.schema.d.ts +18 -18
  90. package/dist/schemas/identity/state-education-agency.schema.d.ts +3 -3
  91. package/dist/utils/bikram-sambat.d.ts +68 -0
  92. package/dist/utils/bikram-sambat.d.ts.map +1 -0
  93. package/dist/utils/bikram-sambat.js +301 -0
  94. package/dist/utils/bikram-sambat.js.map +1 -0
  95. package/dist/utils/currency.d.ts +30 -8
  96. package/dist/utils/currency.d.ts.map +1 -1
  97. package/dist/utils/currency.js +93 -25
  98. package/dist/utils/currency.js.map +1 -1
  99. package/dist/utils/date-format.d.ts +20 -0
  100. package/dist/utils/date-format.d.ts.map +1 -0
  101. package/dist/utils/date-format.js +66 -0
  102. package/dist/utils/date-format.js.map +1 -0
  103. package/dist/utils/school-hours.d.ts +48 -0
  104. package/dist/utils/school-hours.d.ts.map +1 -0
  105. package/dist/utils/school-hours.js +134 -0
  106. package/dist/utils/school-hours.js.map +1 -0
  107. package/dist/validators/date-range.d.ts +6 -6
  108. package/package.json +1 -1
@@ -0,0 +1,301 @@
1
+ "use strict";
2
+ /**
3
+ * Bikram Sambat (BS) ↔ Gregorian (AD) Date Conversion
4
+ *
5
+ * Nepal's official calendar. BS year ~57 years ahead of AD.
6
+ * Months have variable days (29-32). All dates stored as Gregorian ISO;
7
+ * conversion happens at display/input layer only.
8
+ *
9
+ * Data table covers BS years 2000-2090 (sufficient for next 60+ years).
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.gregorianToBs = gregorianToBs;
13
+ exports.bsToGregorian = bsToGregorian;
14
+ exports.formatBsDate = formatBsDate;
15
+ exports.parseBsDate = parseBsDate;
16
+ exports.getCurrentBsYear = getCurrentBsYear;
17
+ exports.getBsMonthName = getBsMonthName;
18
+ exports.getBsMonthDays = getBsMonthDays;
19
+ exports.getBsMonthNames = getBsMonthNames;
20
+ exports.getBsYearDays = getBsYearDays;
21
+ exports.isBsYearSupported = isBsYearSupported;
22
+ exports.getBsSupportedRange = getBsSupportedRange;
23
+ // ============================================================================
24
+ // BS CALENDAR DATA
25
+ // ============================================================================
26
+ /** Days per month for each BS year (index 0 = Baishakh, 11 = Chaitra) */
27
+ const BS_CALENDAR_DATA = {
28
+ 2000: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
29
+ 2001: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
30
+ 2002: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
31
+ 2003: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
32
+ 2004: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
33
+ 2005: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
34
+ 2006: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
35
+ 2007: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
36
+ 2008: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],
37
+ 2009: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
38
+ 2010: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
39
+ 2011: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
40
+ 2012: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
41
+ 2013: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
42
+ 2014: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
43
+ 2015: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
44
+ 2016: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
45
+ 2017: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
46
+ 2018: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],
47
+ 2019: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
48
+ 2020: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
49
+ 2021: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
50
+ 2022: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
51
+ 2023: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
52
+ 2024: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
53
+ 2025: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
54
+ 2026: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
55
+ 2027: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
56
+ 2028: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
57
+ 2029: [31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],
58
+ 2030: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
59
+ 2031: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
60
+ 2032: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
61
+ 2033: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
62
+ 2034: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
63
+ 2035: [30, 32, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],
64
+ 2036: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
65
+ 2037: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
66
+ 2038: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
67
+ 2039: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
68
+ 2040: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
69
+ 2041: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
70
+ 2042: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
71
+ 2043: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
72
+ 2044: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
73
+ 2045: [31, 32, 31, 32, 31, 30, 30, 29, 30, 29, 30, 30],
74
+ 2046: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
75
+ 2047: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
76
+ 2048: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
77
+ 2049: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
78
+ 2050: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
79
+ 2051: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
80
+ 2052: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
81
+ 2053: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
82
+ 2054: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
83
+ 2055: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
84
+ 2056: [31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],
85
+ 2057: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
86
+ 2058: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
87
+ 2059: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
88
+ 2060: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
89
+ 2061: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
90
+ 2062: [30, 32, 31, 32, 31, 31, 29, 30, 29, 30, 29, 31],
91
+ 2063: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
92
+ 2064: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
93
+ 2065: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
94
+ 2066: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 29, 31],
95
+ 2067: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
96
+ 2068: [31, 31, 32, 32, 31, 30, 30, 29, 30, 29, 30, 30],
97
+ 2069: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 31],
98
+ 2070: [31, 31, 31, 32, 31, 31, 29, 30, 30, 29, 30, 30],
99
+ 2071: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
100
+ 2072: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
101
+ 2073: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
102
+ 2074: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
103
+ 2075: [31, 31, 32, 31, 32, 30, 30, 29, 30, 29, 30, 30],
104
+ 2076: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
105
+ 2077: [31, 32, 31, 32, 31, 30, 30, 30, 29, 30, 29, 31],
106
+ 2078: [31, 31, 31, 32, 31, 31, 30, 29, 30, 29, 30, 30],
107
+ 2079: [31, 31, 32, 31, 31, 31, 30, 29, 30, 29, 30, 30],
108
+ 2080: [31, 32, 31, 32, 31, 30, 30, 30, 29, 29, 30, 30],
109
+ 2081: [31, 31, 32, 32, 31, 30, 30, 30, 29, 30, 30, 30],
110
+ 2082: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
111
+ 2083: [31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],
112
+ 2084: [31, 31, 32, 31, 31, 30, 30, 30, 29, 30, 30, 30],
113
+ 2085: [31, 32, 31, 32, 30, 31, 30, 30, 29, 30, 30, 30],
114
+ 2086: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
115
+ 2087: [31, 31, 32, 31, 31, 31, 30, 30, 29, 30, 30, 30],
116
+ 2088: [30, 31, 32, 32, 30, 31, 30, 30, 29, 30, 30, 30],
117
+ 2089: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
118
+ 2090: [30, 32, 31, 32, 31, 30, 30, 30, 29, 30, 30, 30],
119
+ };
120
+ /** BS month names in English transliteration */
121
+ const BS_MONTHS = [
122
+ 'Baishakh', 'Jestha', 'Ashadh', 'Shrawan', 'Bhadra', 'Ashwin',
123
+ 'Kartik', 'Mangsir', 'Poush', 'Magh', 'Falgun', 'Chaitra',
124
+ ];
125
+ /** BS month names in Devanagari */
126
+ const BS_MONTHS_NE = [
127
+ 'बैशाख', 'जेठ', 'असार', 'श्रावण', 'भदौ', 'आश्विन',
128
+ 'कार्तिक', 'मंसिर', 'पौष', 'माघ', 'फाल्गुन', 'चैत्र',
129
+ ];
130
+ // Reference point: BS 2000/1/1 = AD 1943/4/14
131
+ const BS_EPOCH_YEAR = 2000;
132
+ const AD_EPOCH = new Date(1943, 3, 14); // April 14, 1943
133
+ // ============================================================================
134
+ // CORE CONVERSION FUNCTIONS
135
+ // ============================================================================
136
+ function getTotalDaysInBsYear(year) {
137
+ const months = BS_CALENDAR_DATA[year];
138
+ if (!months)
139
+ throw new Error(`BS year ${year} is out of supported range (2000-2090)`);
140
+ return months.reduce((sum, d) => sum + d, 0);
141
+ }
142
+ function daysBetweenDates(d1, d2) {
143
+ const utc1 = Date.UTC(d1.getFullYear(), d1.getMonth(), d1.getDate());
144
+ const utc2 = Date.UTC(d2.getFullYear(), d2.getMonth(), d2.getDate());
145
+ return Math.floor((utc2 - utc1) / 86400000);
146
+ }
147
+ /**
148
+ * Convert Gregorian ISO date string to Bikram Sambat components.
149
+ */
150
+ function gregorianToBs(date) {
151
+ const adDate = new Date(date);
152
+ if (isNaN(adDate.getTime())) {
153
+ throw new Error(`Invalid date string: ${date}`);
154
+ }
155
+ let totalDays = daysBetweenDates(AD_EPOCH, adDate);
156
+ if (totalDays < 0) {
157
+ throw new Error(`Date ${date} is before the supported range`);
158
+ }
159
+ let bsYear = BS_EPOCH_YEAR;
160
+ let bsMonth = 0;
161
+ let bsDay = 1;
162
+ // Count years
163
+ while (totalDays > 0) {
164
+ const daysInYear = getTotalDaysInBsYear(bsYear);
165
+ if (totalDays < daysInYear)
166
+ break;
167
+ totalDays -= daysInYear;
168
+ bsYear++;
169
+ }
170
+ // Count months
171
+ const months = BS_CALENDAR_DATA[bsYear];
172
+ if (!months)
173
+ throw new Error(`BS year ${bsYear} is out of supported range`);
174
+ for (let m = 0; m < 12; m++) {
175
+ if (totalDays < months[m]) {
176
+ bsMonth = m;
177
+ bsDay = totalDays + 1;
178
+ break;
179
+ }
180
+ totalDays -= months[m];
181
+ }
182
+ return { year: bsYear, month: bsMonth + 1, day: bsDay }; // 1-indexed month
183
+ }
184
+ /**
185
+ * Convert Bikram Sambat to Gregorian ISO date string.
186
+ * @param year BS year
187
+ * @param month BS month (1-12, 1=Baishakh)
188
+ * @param day BS day (1-32)
189
+ */
190
+ function bsToGregorian(year, month, day) {
191
+ if (!BS_CALENDAR_DATA[year]) {
192
+ throw new Error(`BS year ${year} is out of supported range (2000-2090)`);
193
+ }
194
+ const monthIdx = month - 1;
195
+ const maxDay = BS_CALENDAR_DATA[year][monthIdx];
196
+ if (!maxDay || day < 1 || day > maxDay) {
197
+ throw new Error(`Invalid BS date: ${year}/${month}/${day} (month ${month} has ${maxDay} days)`);
198
+ }
199
+ // Count total days from BS epoch
200
+ let totalDays = 0;
201
+ for (let y = BS_EPOCH_YEAR; y < year; y++) {
202
+ totalDays += getTotalDaysInBsYear(y);
203
+ }
204
+ for (let m = 0; m < monthIdx; m++) {
205
+ totalDays += BS_CALENDAR_DATA[year][m];
206
+ }
207
+ totalDays += day - 1;
208
+ const result = new Date(AD_EPOCH);
209
+ result.setDate(result.getDate() + totalDays);
210
+ const yyyy = result.getFullYear();
211
+ const mm = String(result.getMonth() + 1).padStart(2, '0');
212
+ const dd = String(result.getDate()).padStart(2, '0');
213
+ return `${yyyy}-${mm}-${dd}`;
214
+ }
215
+ // ============================================================================
216
+ // FORMATTING FUNCTIONS
217
+ // ============================================================================
218
+ /**
219
+ * Format a Gregorian ISO date as a BS date string.
220
+ * @param isoDate Gregorian ISO date (e.g., '2026-04-14')
221
+ * @param format Output format: 'YYYY/MM/DD' (default), 'long', 'short'
222
+ */
223
+ function formatBsDate(isoDate, format = 'YYYY/MM/DD') {
224
+ const bs = gregorianToBs(isoDate);
225
+ if (format === 'long') {
226
+ return `${bs.day} ${BS_MONTHS[bs.month - 1]} ${bs.year}`;
227
+ }
228
+ if (format === 'short') {
229
+ return `${bs.day} ${BS_MONTHS[bs.month - 1].slice(0, 3)} ${bs.year}`;
230
+ }
231
+ // Default: YYYY/MM/DD
232
+ const mm = String(bs.month).padStart(2, '0');
233
+ const dd = String(bs.day).padStart(2, '0');
234
+ return `${bs.year}/${mm}/${dd}`;
235
+ }
236
+ /**
237
+ * Parse a BS date string to Gregorian ISO.
238
+ * Accepts formats: 'YYYY/MM/DD', 'YYYY-MM-DD'
239
+ */
240
+ function parseBsDate(bsString) {
241
+ const parts = bsString.split(/[\/\-]/);
242
+ if (parts.length !== 3) {
243
+ throw new Error(`Cannot parse BS date: ${bsString}. Expected format: YYYY/MM/DD`);
244
+ }
245
+ const [y, m, d] = parts.map(Number);
246
+ return bsToGregorian(y, m, d);
247
+ }
248
+ /**
249
+ * Get current BS year.
250
+ */
251
+ function getCurrentBsYear() {
252
+ const now = new Date();
253
+ const iso = `${now.getFullYear()}-${String(now.getMonth() + 1).padStart(2, '0')}-${String(now.getDate()).padStart(2, '0')}`;
254
+ return gregorianToBs(iso).year;
255
+ }
256
+ /**
257
+ * Get BS month name (English).
258
+ * @param month 1-indexed (1=Baishakh, 12=Chaitra)
259
+ */
260
+ function getBsMonthName(month, locale = 'en') {
261
+ if (month < 1 || month > 12)
262
+ throw new Error(`Invalid BS month: ${month}`);
263
+ return locale === 'ne' ? BS_MONTHS_NE[month - 1] : BS_MONTHS[month - 1];
264
+ }
265
+ /**
266
+ * Get number of days in a BS month.
267
+ */
268
+ function getBsMonthDays(year, month) {
269
+ const data = BS_CALENDAR_DATA[year];
270
+ if (!data)
271
+ throw new Error(`BS year ${year} is out of supported range`);
272
+ if (month < 1 || month > 12)
273
+ throw new Error(`Invalid BS month: ${month}`);
274
+ return data[month - 1];
275
+ }
276
+ /**
277
+ * Get all BS month names.
278
+ */
279
+ function getBsMonthNames(locale = 'en') {
280
+ return locale === 'ne' ? [...BS_MONTHS_NE] : [...BS_MONTHS];
281
+ }
282
+ /**
283
+ * Get total days in a BS year.
284
+ */
285
+ function getBsYearDays(year) {
286
+ return getTotalDaysInBsYear(year);
287
+ }
288
+ /**
289
+ * Check if a BS year is in the supported range.
290
+ */
291
+ function isBsYearSupported(year) {
292
+ return !!BS_CALENDAR_DATA[year];
293
+ }
294
+ /**
295
+ * Get the supported BS year range.
296
+ */
297
+ function getBsSupportedRange() {
298
+ const years = Object.keys(BS_CALENDAR_DATA).map(Number);
299
+ return { min: Math.min(...years), max: Math.max(...years) };
300
+ }
301
+ //# sourceMappingURL=bikram-sambat.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bikram-sambat.js","sourceRoot":"","sources":["../../src/utils/bikram-sambat.ts"],"names":[],"mappings":";AAAA;;;;;;;;GAQG;;AAwIH,sCAqCC;AAQD,sCA4BC;AAWD,oCAcC;AAMD,kCAOC;AAKD,4CAIC;AAMD,wCAGC;AAKD,wCAKC;AAKD,0CAEC;AAKD,sCAEC;AAKD,8CAEC;AAKD,kDAGC;AA9SD,+EAA+E;AAC/E,mBAAmB;AACnB,+EAA+E;AAE/E,yEAAyE;AACzE,MAAM,gBAAgB,GAA6B;IACjD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,CAAC;IACtD,IAAI,EAAE,CAAC,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EAAE,EA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"}
@@ -1,23 +1,45 @@
1
1
  /**
2
2
  * Currency Formatting Utilities
3
3
  *
4
- * NPR formatting with Nepal-style lakh/crore grouping.
4
+ * Generic currency formatting with special support for South Asian
5
+ * lakh/crore grouping (NPR, INR) and standard Western grouping.
5
6
  * Pure utility functions — NOT in schema files.
6
7
  */
7
- interface CurrencyFormatOpts {
8
- locale?: 'en' | 'ne';
8
+ export interface CurrencyFormatOpts {
9
+ locale?: string;
9
10
  showSymbol?: boolean;
10
11
  decimals?: number;
11
12
  }
13
+ /**
14
+ * Generic currency formatter.
15
+ *
16
+ * Picks the correct digit-grouping style (lakh/crore vs. Western)
17
+ * based on the currency code. Falls back to Western grouping for
18
+ * unknown currencies.
19
+ *
20
+ * @param amount - numeric amount (supports 0 and negatives for credits)
21
+ * @param currency - ISO 4217 currency code (e.g. 'NPR', 'USD')
22
+ * @param options - formatting overrides
23
+ *
24
+ * Examples:
25
+ * formatCurrency(0, 'NPR') → "NPR 0.00"
26
+ * formatCurrency(150000, 'NPR') → "NPR 1,50,000.00"
27
+ * formatCurrency(-500, 'NPR') → "NPR -500.00"
28
+ * formatCurrency(1234567, 'USD') → "$ 1,234,567.00"
29
+ * formatCurrency(1234567, 'INR') → "INR 12,34,567.00"
30
+ */
31
+ export declare function formatCurrency(amount: number, currency: string, options?: CurrencyFormatOpts): string;
12
32
  /**
13
33
  * Format an amount as NPR currency string.
14
- * Uses Nepal's number formatting (commas at lakh/crore positions).
34
+ * Convenience wrapper around formatCurrency for Nepali Rupees.
35
+ * Uses Nepal's lakh/crore grouping (##,##,###.##).
15
36
  *
16
37
  * Examples:
17
- * formatNPR(12500) → "NPR 12,500.00"
18
- * formatNPR(12500, { locale: 'ne', showSymbol: true }) → "रू १२,५००.००"
19
- * formatNPR(150000) → "NPR 1,50,000.00" (lakh grouping)
38
+ * formatNPR(0) → "NPR 0.00"
39
+ * formatNPR(12500) → "NPR 12,500.00"
40
+ * formatNPR(150000) → "NPR 1,50,000.00"
41
+ * formatNPR(-500) → "NPR -500.00"
42
+ * formatNPR(12500, { locale: 'ne' }) → "रू १२,५००.००"
20
43
  */
21
44
  export declare function formatNPR(amount: number, options?: CurrencyFormatOpts): string;
22
- export {};
23
45
  //# sourceMappingURL=currency.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../src/utils/currency.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,UAAU,kBAAkB;IAC1B,MAAM,CAAC,EAAE,IAAI,GAAG,IAAI,CAAC;IACrB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;GAQG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CA8BR"}
1
+ {"version":3,"file":"currency.d.ts","sourceRoot":"","sources":["../../src/utils/currency.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAMH,MAAM,WAAW,kBAAkB;IACjC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAsDD;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAgB,cAAc,CAC5B,MAAM,EAAE,MAAM,EACd,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAuCR;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,SAAS,CACvB,MAAM,EAAE,MAAM,EACd,OAAO,GAAE,kBAAuB,GAC/B,MAAM,CAER"}
@@ -2,44 +2,112 @@
2
2
  /**
3
3
  * Currency Formatting Utilities
4
4
  *
5
- * NPR formatting with Nepal-style lakh/crore grouping.
5
+ * Generic currency formatting with special support for South Asian
6
+ * lakh/crore grouping (NPR, INR) and standard Western grouping.
6
7
  * Pure utility functions — NOT in schema files.
7
8
  */
8
9
  Object.defineProperty(exports, "__esModule", { value: true });
10
+ exports.formatCurrency = formatCurrency;
9
11
  exports.formatNPR = formatNPR;
12
+ // ============================================================================
13
+ // CURRENCY REGISTRY
14
+ // ============================================================================
15
+ const CURRENCY_META = {
16
+ NPR: { code: 'NPR', symbol: 'NPR', symbolNative: 'रू', grouping: 'south_asian' },
17
+ INR: { code: 'INR', symbol: 'INR', symbolNative: '₹', grouping: 'south_asian' },
18
+ USD: { code: 'USD', symbol: '$', grouping: 'western' },
19
+ GBP: { code: 'GBP', symbol: '£', grouping: 'western' },
20
+ CAD: { code: 'CAD', symbol: 'CA$', grouping: 'western' },
21
+ AUD: { code: 'AUD', symbol: 'A$', grouping: 'western' },
22
+ };
23
+ // ============================================================================
24
+ // INTERNAL HELPERS
25
+ // ============================================================================
10
26
  /**
11
- * Format an amount as NPR currency string.
12
- * Uses Nepal's number formatting (commas at lakh/crore positions).
27
+ * Apply South Asian grouping: last 3 digits, then groups of 2.
28
+ * e.g. 1234567 "12,34,567"
29
+ */
30
+ function groupSouthAsian(intPart) {
31
+ if (intPart.length <= 3)
32
+ return intPart;
33
+ const last3 = intPart.slice(-3);
34
+ const rest = intPart.slice(0, -3);
35
+ const pairs = rest.replace(/\B(?=(\d{2})+(?!\d))/g, ',');
36
+ return `${pairs},${last3}`;
37
+ }
38
+ /**
39
+ * Apply Western grouping: groups of 3.
40
+ * e.g. 1234567 → "1,234,567"
41
+ */
42
+ function groupWestern(intPart) {
43
+ return intPart.replace(/\B(?=(\d{3})+(?!\d))/g, ',');
44
+ }
45
+ // ============================================================================
46
+ // PUBLIC API
47
+ // ============================================================================
48
+ /**
49
+ * Generic currency formatter.
50
+ *
51
+ * Picks the correct digit-grouping style (lakh/crore vs. Western)
52
+ * based on the currency code. Falls back to Western grouping for
53
+ * unknown currencies.
54
+ *
55
+ * @param amount - numeric amount (supports 0 and negatives for credits)
56
+ * @param currency - ISO 4217 currency code (e.g. 'NPR', 'USD')
57
+ * @param options - formatting overrides
13
58
  *
14
59
  * Examples:
15
- * formatNPR(12500) → "NPR 12,500.00"
16
- * formatNPR(12500, { locale: 'ne', showSymbol: true }) → "रू १२,५००.००"
17
- * formatNPR(150000) → "NPR 1,50,000.00" (lakh grouping)
60
+ * formatCurrency(0, 'NPR') → "NPR 0.00"
61
+ * formatCurrency(150000, 'NPR') → "NPR 1,50,000.00"
62
+ * formatCurrency(-500, 'NPR') → "NPR -500.00"
63
+ * formatCurrency(1234567, 'USD') → "$ 1,234,567.00"
64
+ * formatCurrency(1234567, 'INR') → "INR 12,34,567.00"
18
65
  */
19
- function formatNPR(amount, options = {}) {
20
- const { locale = 'en', showSymbol = true, decimals = 2 } = options;
21
- // Format with Nepal-style grouping (##,##,###.##)
22
- const fixed = Math.abs(amount).toFixed(decimals);
66
+ function formatCurrency(amount, currency, options = {}) {
67
+ var _a, _b;
68
+ const { locale, showSymbol = true, decimals = 2 } = options;
69
+ const meta = CURRENCY_META[currency];
70
+ const grouping = (_a = meta === null || meta === void 0 ? void 0 : meta.grouping) !== null && _a !== void 0 ? _a : 'western';
71
+ // Handle NaN / undefined defensively
72
+ const safeAmount = Number.isFinite(amount) ? amount : 0;
73
+ const isNegative = safeAmount < 0;
74
+ const fixed = Math.abs(safeAmount).toFixed(decimals);
23
75
  const [intPart, decPart] = fixed.split('.');
24
- // Apply lakh/crore grouping: last 3 digits, then groups of 2
25
- let grouped;
26
- if (intPart.length <= 3) {
27
- grouped = intPart;
28
- }
29
- else {
30
- const last3 = intPart.slice(-3);
31
- const rest = intPart.slice(0, -3);
32
- const pairs = rest.replace(/\B(?=(\d{2})+(?!\d))/g, ',');
33
- grouped = `${pairs},${last3}`;
34
- }
35
- // Convert digits to Devanagari for Nepali locale
76
+ const grouped = grouping === 'south_asian'
77
+ ? groupSouthAsian(intPart)
78
+ : groupWestern(intPart);
36
79
  let formatted = decPart ? `${grouped}.${decPart}` : grouped;
80
+ // Convert digits to Devanagari for Nepali locale
37
81
  if (locale === 'ne') {
38
82
  formatted = formatted.replace(/[0-9]/g, (d) => String.fromCharCode(0x0966 + Number(d)));
39
83
  }
40
- if (amount < 0)
84
+ if (isNegative)
41
85
  formatted = `-${formatted}`;
42
- const symbol = locale === 'ne' ? 'रू' : 'NPR';
43
- return showSymbol ? `${symbol} ${formatted}` : formatted;
86
+ if (!showSymbol)
87
+ return formatted;
88
+ // Pick display symbol
89
+ let symbol;
90
+ if (locale === 'ne' && (meta === null || meta === void 0 ? void 0 : meta.symbolNative)) {
91
+ symbol = meta.symbolNative;
92
+ }
93
+ else {
94
+ symbol = (_b = meta === null || meta === void 0 ? void 0 : meta.symbol) !== null && _b !== void 0 ? _b : currency;
95
+ }
96
+ return `${symbol} ${formatted}`;
97
+ }
98
+ /**
99
+ * Format an amount as NPR currency string.
100
+ * Convenience wrapper around formatCurrency for Nepali Rupees.
101
+ * Uses Nepal's lakh/crore grouping (##,##,###.##).
102
+ *
103
+ * Examples:
104
+ * formatNPR(0) → "NPR 0.00"
105
+ * formatNPR(12500) → "NPR 12,500.00"
106
+ * formatNPR(150000) → "NPR 1,50,000.00"
107
+ * formatNPR(-500) → "NPR -500.00"
108
+ * formatNPR(12500, { locale: 'ne' }) → "रू १२,५००.००"
109
+ */
110
+ function formatNPR(amount, options = {}) {
111
+ return formatCurrency(amount, 'NPR', options);
44
112
  }
45
113
  //# sourceMappingURL=currency.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"currency.js","sourceRoot":"","sources":["../../src/utils/currency.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAiBH,8BAiCC;AA1CD;;;;;;;;GAQG;AACH,SAAgB,SAAS,CACvB,MAAc,EACd,UAA8B,EAAE;IAEhC,MAAM,EAAE,MAAM,GAAG,IAAI,EAAE,UAAU,GAAG,IAAI,EAAE,QAAQ,GAAG,CAAC,EAAE,GAAG,OAAO,CAAC;IAEnE,kDAAkD;IAClD,MAAM,KAAK,GAAG,IAAI,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,CAAC,OAAO,EAAE,OAAO,CAAC,GAAG,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;IAE5C,6DAA6D;IAC7D,IAAI,OAAe,CAAC;IACpB,IAAI,OAAO,CAAC,MAAM,IAAI,CAAC,EAAE,CAAC;QACxB,OAAO,GAAG,OAAO,CAAC;IACpB,CAAC;SAAM,CAAC;QACN,MAAM,KAAK,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAChC,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC;QAClC,MAAM,KAAK,GAAG,IAAI,CAAC,OAAO,CAAC,uBAAuB,EAAE,GAAG,CAAC,CAAC;QACzD,OAAO,GAAG,GAAG,KAAK,IAAI,KAAK,EAAE,CAAC;IAChC,CAAC;IAED,iDAAiD;IACjD,IAAI,SAAS,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,OAAO,EAAE,CAAC,CAAC,CAAC,OAAO,CAAC;IAC5D,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;QACpB,SAAS,GAAG,SAAS,CAAC,OAAO,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,EAAE,CAC5C,MAAM,CAAC,YAAY,CAAC,MAAM,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CACxC,CAAC;IACJ,CAAC;IAED,IAAI,MAAM,GAAG,CAAC;QAAE,SAAS,GAAG,IAAI,SAAS,EAAE,CAAC;IAE5C,MAAM,MAAM,GAAG,MAAM,KAAK,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC;IAC9C,OAAO,UAAU,CAAC,CAAC,CAAC,GAAG,MAAM,IAAI,SAAS,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;AAC3D,CAAC"}
1
+ {"version":3,"file":"currency.js","sourceRoot":"","sources":["../../src/utils/currency.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ /**
2
+ * Calendar-System-Aware Date Formatting
3
+ *
4
+ * Wraps Gregorian and BS formatting under a single API.
5
+ * All dates stored as Gregorian ISO — this formats for display.
6
+ */
7
+ /**
8
+ * Format an ISO date according to the school's calendar system.
9
+ */
10
+ export declare function formatSchoolDate(isoDate: string, calendarSystem: string, format?: string): string;
11
+ /**
12
+ * Parse a date string back to Gregorian ISO, based on calendar system.
13
+ */
14
+ export declare function parseSchoolDate(dateString: string, calendarSystem: string): string;
15
+ /**
16
+ * Generate an academic year label based on calendar system.
17
+ * Gregorian: "2025-2026", BS: "2082-2083"
18
+ */
19
+ export declare function getAcademicYearLabel(startDate: string, endDate: string, calendarSystem: string): string;
20
+ //# sourceMappingURL=date-format.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-format.d.ts","sourceRoot":"","sources":["../../src/utils/date-format.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAIH;;GAEG;AACH,wBAAgB,gBAAgB,CAC9B,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,MAAM,CAAC,EAAE,MAAM,GACd,MAAM,CAuBR;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,UAAU,EAAE,MAAM,EAAE,cAAc,EAAE,MAAM,GAAG,MAAM,CAMlF;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,GACrB,MAAM,CAYR"}
@@ -0,0 +1,66 @@
1
+ "use strict";
2
+ /**
3
+ * Calendar-System-Aware Date Formatting
4
+ *
5
+ * Wraps Gregorian and BS formatting under a single API.
6
+ * All dates stored as Gregorian ISO — this formats for display.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.formatSchoolDate = formatSchoolDate;
10
+ exports.parseSchoolDate = parseSchoolDate;
11
+ exports.getAcademicYearLabel = getAcademicYearLabel;
12
+ const bikram_sambat_1 = require("./bikram-sambat");
13
+ /**
14
+ * Format an ISO date according to the school's calendar system.
15
+ */
16
+ function formatSchoolDate(isoDate, calendarSystem, format) {
17
+ if (!isoDate)
18
+ return '';
19
+ if (calendarSystem === 'bikram_sambat') {
20
+ return (0, bikram_sambat_1.formatBsDate)(isoDate, format);
21
+ }
22
+ // Gregorian formatting
23
+ const date = new Date(isoDate);
24
+ if (isNaN(date.getTime()))
25
+ return isoDate;
26
+ if (format === 'long') {
27
+ return date.toLocaleDateString('en-US', { year: 'numeric', month: 'long', day: 'numeric' });
28
+ }
29
+ if (format === 'short') {
30
+ return date.toLocaleDateString('en-US', { year: 'numeric', month: 'short', day: 'numeric' });
31
+ }
32
+ // Default: YYYY-MM-DD
33
+ const yyyy = date.getFullYear();
34
+ const mm = String(date.getMonth() + 1).padStart(2, '0');
35
+ const dd = String(date.getDate()).padStart(2, '0');
36
+ return `${yyyy}-${mm}-${dd}`;
37
+ }
38
+ /**
39
+ * Parse a date string back to Gregorian ISO, based on calendar system.
40
+ */
41
+ function parseSchoolDate(dateString, calendarSystem) {
42
+ if (calendarSystem === 'bikram_sambat') {
43
+ return (0, bikram_sambat_1.parseBsDate)(dateString);
44
+ }
45
+ // Already Gregorian
46
+ return dateString;
47
+ }
48
+ /**
49
+ * Generate an academic year label based on calendar system.
50
+ * Gregorian: "2025-2026", BS: "2082-2083"
51
+ */
52
+ function getAcademicYearLabel(startDate, endDate, calendarSystem) {
53
+ if (calendarSystem === 'bikram_sambat') {
54
+ const startBs = (0, bikram_sambat_1.gregorianToBs)(startDate);
55
+ const endBs = (0, bikram_sambat_1.gregorianToBs)(endDate);
56
+ if (startBs.year === endBs.year)
57
+ return String(startBs.year);
58
+ return `${startBs.year}-${endBs.year}`;
59
+ }
60
+ const startYear = new Date(startDate).getFullYear();
61
+ const endYear = new Date(endDate).getFullYear();
62
+ if (startYear === endYear)
63
+ return String(startYear);
64
+ return `${startYear}-${endYear}`;
65
+ }
66
+ //# sourceMappingURL=date-format.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"date-format.js","sourceRoot":"","sources":["../../src/utils/date-format.ts"],"names":[],"mappings":";AAAA;;;;;GAKG;;AAOH,4CA2BC;AAKD,0CAMC;AAMD,oDAgBC;AAjED,mDAA2E;AAE3E;;GAEG;AACH,SAAgB,gBAAgB,CAC9B,OAAe,EACf,cAAsB,EACtB,MAAe;IAEf,IAAI,CAAC,OAAO;QAAE,OAAO,EAAE,CAAC;IAExB,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;QACvC,OAAO,IAAA,4BAAY,EAAC,OAAO,EAAE,MAAM,CAAC,CAAC;IACvC,CAAC;IAED,uBAAuB;IACvB,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC;IAC/B,IAAI,KAAK,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC;QAAE,OAAO,OAAO,CAAC;IAE1C,IAAI,MAAM,KAAK,MAAM,EAAE,CAAC;QACtB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC9F,CAAC;IACD,IAAI,MAAM,KAAK,OAAO,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC,kBAAkB,CAAC,OAAO,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,KAAK,EAAE,OAAO,EAAE,GAAG,EAAE,SAAS,EAAE,CAAC,CAAC;IAC/F,CAAC;IAED,sBAAsB;IACtB,MAAM,IAAI,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAChC,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,QAAQ,EAAE,GAAG,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACxD,MAAM,EAAE,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,EAAE,CAAC,CAAC,QAAQ,CAAC,CAAC,EAAE,GAAG,CAAC,CAAC;IACnD,OAAO,GAAG,IAAI,IAAI,EAAE,IAAI,EAAE,EAAE,CAAC;AAC/B,CAAC;AAED;;GAEG;AACH,SAAgB,eAAe,CAAC,UAAkB,EAAE,cAAsB;IACxE,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;QACvC,OAAO,IAAA,2BAAW,EAAC,UAAU,CAAC,CAAC;IACjC,CAAC;IACD,oBAAoB;IACpB,OAAO,UAAU,CAAC;AACpB,CAAC;AAED;;;GAGG;AACH,SAAgB,oBAAoB,CAClC,SAAiB,EACjB,OAAe,EACf,cAAsB;IAEtB,IAAI,cAAc,KAAK,eAAe,EAAE,CAAC;QACvC,MAAM,OAAO,GAAG,IAAA,6BAAa,EAAC,SAAS,CAAC,CAAC;QACzC,MAAM,KAAK,GAAG,IAAA,6BAAa,EAAC,OAAO,CAAC,CAAC;QACrC,IAAI,OAAO,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;QAC7D,OAAO,GAAG,OAAO,CAAC,IAAI,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC;IACzC,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,WAAW,EAAE,CAAC;IACpD,MAAM,OAAO,GAAG,IAAI,IAAI,CAAC,OAAO,CAAC,CAAC,WAAW,EAAE,CAAC;IAChD,IAAI,SAAS,KAAK,OAAO;QAAE,OAAO,MAAM,CAAC,SAAS,CAAC,CAAC;IACpD,OAAO,GAAG,SAAS,IAAI,OAAO,EAAE,CAAC;AACnC,CAAC"}