@aibrains/shared-types 0.15.0 → 0.17.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.
- package/dist/events/enrollment-billing.events.d.ts +47 -0
- package/dist/events/enrollment-billing.events.d.ts.map +1 -0
- package/dist/events/enrollment-billing.events.js +9 -0
- package/dist/events/enrollment-billing.events.js.map +1 -0
- package/dist/identity/country-config.d.ts +120 -0
- package/dist/identity/country-config.d.ts.map +1 -0
- package/dist/identity/country-config.js +404 -0
- package/dist/identity/country-config.js.map +1 -0
- package/dist/identity/field-governance.d.ts +40 -0
- package/dist/identity/field-governance.d.ts.map +1 -0
- package/dist/identity/field-governance.js +111 -0
- package/dist/identity/field-governance.js.map +1 -0
- package/dist/index.d.ts +6 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -1
- package/dist/index.js.map +1 -1
- package/dist/mappers/edfi/education-org.mapper.js +3 -3
- package/dist/mappers/edfi/education-org.mapper.js.map +1 -1
- package/dist/schemas/academics/course.schema.d.ts +10 -10
- package/dist/schemas/common.d.ts +3 -2
- package/dist/schemas/common.d.ts.map +1 -1
- package/dist/schemas/common.js +5 -4
- package/dist/schemas/common.js.map +1 -1
- package/dist/schemas/enrollment/enrollment.schema.d.ts +12 -12
- package/dist/schemas/finance/common.d.ts +1 -1
- package/dist/schemas/finance/common.d.ts.map +1 -1
- package/dist/schemas/finance/common.js +1 -1
- package/dist/schemas/finance/common.js.map +1 -1
- package/dist/schemas/finance/credit-note.schema.d.ts +127 -0
- package/dist/schemas/finance/credit-note.schema.d.ts.map +1 -0
- package/dist/schemas/finance/credit-note.schema.js +55 -0
- package/dist/schemas/finance/credit-note.schema.js.map +1 -0
- package/dist/schemas/finance/discount-rule.schema.d.ts +447 -0
- package/dist/schemas/finance/discount-rule.schema.d.ts.map +1 -0
- package/dist/schemas/finance/discount-rule.schema.js +58 -0
- package/dist/schemas/finance/discount-rule.schema.js.map +1 -0
- package/dist/schemas/finance/fee-structure.schema.d.ts +36 -6
- package/dist/schemas/finance/fee-structure.schema.d.ts.map +1 -1
- package/dist/schemas/finance/fee-structure.schema.js +10 -0
- package/dist/schemas/finance/fee-structure.schema.js.map +1 -1
- package/dist/schemas/finance/index.d.ts +3 -0
- package/dist/schemas/finance/index.d.ts.map +1 -1
- package/dist/schemas/finance/index.js +3 -0
- package/dist/schemas/finance/index.js.map +1 -1
- package/dist/schemas/finance/invoice.schema.d.ts +63 -3
- package/dist/schemas/finance/invoice.schema.d.ts.map +1 -1
- package/dist/schemas/finance/invoice.schema.js +10 -1
- package/dist/schemas/finance/invoice.schema.js.map +1 -1
- package/dist/schemas/finance/payment.schema.d.ts +22 -22
- package/dist/schemas/finance/refund.schema.d.ts +101 -0
- package/dist/schemas/finance/refund.schema.d.ts.map +1 -0
- package/dist/schemas/finance/refund.schema.js +47 -0
- package/dist/schemas/finance/refund.schema.js.map +1 -0
- package/dist/schemas/identity/academic-year.schema.d.ts +14 -14
- package/dist/schemas/identity/department.schema.d.ts +6 -6
- package/dist/schemas/identity/index.d.ts +2 -0
- package/dist/schemas/identity/index.d.ts.map +1 -1
- package/dist/schemas/identity/index.js +4 -0
- package/dist/schemas/identity/index.js.map +1 -1
- package/dist/schemas/identity/leave.schema.d.ts +26 -26
- package/dist/schemas/identity/role.schema.d.ts +12 -12
- package/dist/schemas/identity/school-year.schema.d.ts +18 -18
- package/dist/schemas/identity/school.schema.d.ts +609 -120
- package/dist/schemas/identity/school.schema.d.ts.map +1 -1
- package/dist/schemas/identity/school.schema.js +32 -8
- package/dist/schemas/identity/school.schema.js.map +1 -1
- package/dist/schemas/identity/staff-assignment.schema.d.ts +22 -14
- package/dist/schemas/identity/staff-assignment.schema.d.ts.map +1 -1
- package/dist/schemas/identity/staff-assignment.schema.js +4 -3
- package/dist/schemas/identity/staff-assignment.schema.js.map +1 -1
- package/dist/schemas/identity/staff.schema.d.ts +85 -50
- package/dist/schemas/identity/staff.schema.d.ts.map +1 -1
- package/dist/schemas/identity/staff.schema.js +7 -5
- package/dist/schemas/identity/staff.schema.js.map +1 -1
- package/dist/schemas/identity/user.schema.d.ts +3 -3
- package/dist/schemas/identity/user.schema.js +1 -1
- package/dist/schemas/identity/user.schema.js.map +1 -1
- package/dist/utils/bikram-sambat.d.ts +68 -0
- package/dist/utils/bikram-sambat.d.ts.map +1 -0
- package/dist/utils/bikram-sambat.js +301 -0
- package/dist/utils/bikram-sambat.js.map +1 -0
- package/dist/utils/currency.d.ts +30 -8
- package/dist/utils/currency.d.ts.map +1 -1
- package/dist/utils/currency.js +93 -25
- package/dist/utils/currency.js.map +1 -1
- package/dist/utils/date-format.d.ts +20 -0
- package/dist/utils/date-format.d.ts.map +1 -0
- package/dist/utils/date-format.js +66 -0
- package/dist/utils/date-format.js.map +1 -0
- package/dist/utils/school-hours.d.ts +48 -0
- package/dist/utils/school-hours.d.ts.map +1 -0
- package/dist/utils/school-hours.js +134 -0
- package/dist/utils/school-hours.js.map +1 -0
- package/package.json +1 -1
package/dist/utils/currency.js
CHANGED
|
@@ -2,44 +2,112 @@
|
|
|
2
2
|
/**
|
|
3
3
|
* Currency Formatting Utilities
|
|
4
4
|
*
|
|
5
|
-
*
|
|
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
|
-
*
|
|
12
|
-
*
|
|
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
|
-
*
|
|
16
|
-
*
|
|
17
|
-
*
|
|
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
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
const
|
|
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
|
-
|
|
25
|
-
|
|
26
|
-
|
|
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 (
|
|
84
|
+
if (isNegative)
|
|
41
85
|
formatted = `-${formatted}`;
|
|
42
|
-
|
|
43
|
-
|
|
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
|
|
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"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* School Hours Validation Utility
|
|
3
|
+
*
|
|
4
|
+
* Validates schedule slots, school days, and generates default bell schedule periods.
|
|
5
|
+
* All time values are HH:mm format (24-hour).
|
|
6
|
+
*/
|
|
7
|
+
export interface SchoolHoursConfig {
|
|
8
|
+
startTime: string;
|
|
9
|
+
endTime: string;
|
|
10
|
+
schoolDays: number[];
|
|
11
|
+
periodDuration: number;
|
|
12
|
+
}
|
|
13
|
+
export interface Period {
|
|
14
|
+
number: number;
|
|
15
|
+
startTime: string;
|
|
16
|
+
endTime: string;
|
|
17
|
+
type: 'class' | 'break';
|
|
18
|
+
label: string;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Check if a time falls within school hours (inclusive start, exclusive end)
|
|
22
|
+
*/
|
|
23
|
+
export declare function isWithinSchoolHours(time: string, startTime: string, endTime: string): boolean;
|
|
24
|
+
/**
|
|
25
|
+
* Check if a day of week is a school day
|
|
26
|
+
*/
|
|
27
|
+
export declare function isSchoolDay(dayOfWeek: number, schoolDays: number[]): boolean;
|
|
28
|
+
/**
|
|
29
|
+
* Validate a schedule slot against school hours config.
|
|
30
|
+
* Returns error message string or null if valid.
|
|
31
|
+
*/
|
|
32
|
+
export declare function validateScheduleSlot(params: {
|
|
33
|
+
startTime: string;
|
|
34
|
+
endTime: string;
|
|
35
|
+
dayOfWeek: number;
|
|
36
|
+
schoolConfig: SchoolHoursConfig;
|
|
37
|
+
}): string | null;
|
|
38
|
+
/**
|
|
39
|
+
* Auto-generate bell schedule periods based on school hours and period duration.
|
|
40
|
+
* Inserts breaks between periods.
|
|
41
|
+
*/
|
|
42
|
+
export declare function generateDefaultPeriods(startTime: string, endTime: string, periodDuration: number, breakDuration?: number): Period[];
|
|
43
|
+
/**
|
|
44
|
+
* Validate a bell schedule against school hours.
|
|
45
|
+
* Returns array of error messages (empty if valid).
|
|
46
|
+
*/
|
|
47
|
+
export declare function validateBellSchedule(periods: Period[], schoolConfig: SchoolHoursConfig): string[];
|
|
48
|
+
//# sourceMappingURL=school-hours.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"school-hours.d.ts","sourceRoot":"","sources":["../../src/utils/school-hours.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,iBAAiB;IAChC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,MAAM;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC;IACxB,KAAK,EAAE,MAAM,CAAC;CACf;AAmBD;;GAEG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAK7F;AAED;;GAEG;AACH,wBAAgB,WAAW,CAAC,SAAS,EAAE,MAAM,EAAE,UAAU,EAAE,MAAM,EAAE,GAAG,OAAO,CAE5E;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE;IAC3C,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,iBAAiB,CAAC;CACjC,GAAG,MAAM,GAAG,IAAI,CAyBhB;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CACpC,SAAS,EAAE,MAAM,EACjB,OAAO,EAAE,MAAM,EACf,cAAc,EAAE,MAAM,EACtB,aAAa,GAAE,MAAW,GACzB,MAAM,EAAE,CAiCV;AAED;;;GAGG;AACH,wBAAgB,oBAAoB,CAClC,OAAO,EAAE,MAAM,EAAE,EACjB,YAAY,EAAE,iBAAiB,GAC9B,MAAM,EAAE,CA+BV"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* School Hours Validation Utility
|
|
4
|
+
*
|
|
5
|
+
* Validates schedule slots, school days, and generates default bell schedule periods.
|
|
6
|
+
* All time values are HH:mm format (24-hour).
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.isWithinSchoolHours = isWithinSchoolHours;
|
|
10
|
+
exports.isSchoolDay = isSchoolDay;
|
|
11
|
+
exports.validateScheduleSlot = validateScheduleSlot;
|
|
12
|
+
exports.generateDefaultPeriods = generateDefaultPeriods;
|
|
13
|
+
exports.validateBellSchedule = validateBellSchedule;
|
|
14
|
+
/**
|
|
15
|
+
* Parse HH:mm string to minutes since midnight
|
|
16
|
+
*/
|
|
17
|
+
function parseTime(time) {
|
|
18
|
+
const [h, m] = time.split(':').map(Number);
|
|
19
|
+
return h * 60 + m;
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* Format minutes since midnight to HH:mm
|
|
23
|
+
*/
|
|
24
|
+
function formatTime(minutes) {
|
|
25
|
+
const h = Math.floor(minutes / 60);
|
|
26
|
+
const m = minutes % 60;
|
|
27
|
+
return `${String(h).padStart(2, '0')}:${String(m).padStart(2, '0')}`;
|
|
28
|
+
}
|
|
29
|
+
/**
|
|
30
|
+
* Check if a time falls within school hours (inclusive start, exclusive end)
|
|
31
|
+
*/
|
|
32
|
+
function isWithinSchoolHours(time, startTime, endTime) {
|
|
33
|
+
const t = parseTime(time);
|
|
34
|
+
const start = parseTime(startTime);
|
|
35
|
+
const end = parseTime(endTime);
|
|
36
|
+
return t >= start && t <= end;
|
|
37
|
+
}
|
|
38
|
+
/**
|
|
39
|
+
* Check if a day of week is a school day
|
|
40
|
+
*/
|
|
41
|
+
function isSchoolDay(dayOfWeek, schoolDays) {
|
|
42
|
+
return schoolDays.includes(dayOfWeek);
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Validate a schedule slot against school hours config.
|
|
46
|
+
* Returns error message string or null if valid.
|
|
47
|
+
*/
|
|
48
|
+
function validateScheduleSlot(params) {
|
|
49
|
+
const { startTime, endTime, dayOfWeek, schoolConfig } = params;
|
|
50
|
+
// Check school day
|
|
51
|
+
if (!isSchoolDay(dayOfWeek, schoolConfig.schoolDays)) {
|
|
52
|
+
const dayNames = ['Sunday', 'Monday', 'Tuesday', 'Wednesday', 'Thursday', 'Friday', 'Saturday'];
|
|
53
|
+
return `${dayNames[dayOfWeek]} is not a school day`;
|
|
54
|
+
}
|
|
55
|
+
// Check start time
|
|
56
|
+
if (!isWithinSchoolHours(startTime, schoolConfig.startTime, schoolConfig.endTime)) {
|
|
57
|
+
return `Start time ${startTime} falls outside school hours (${schoolConfig.startTime}-${schoolConfig.endTime})`;
|
|
58
|
+
}
|
|
59
|
+
// Check end time
|
|
60
|
+
if (!isWithinSchoolHours(endTime, schoolConfig.startTime, schoolConfig.endTime)) {
|
|
61
|
+
return `End time ${endTime} falls outside school hours (${schoolConfig.startTime}-${schoolConfig.endTime})`;
|
|
62
|
+
}
|
|
63
|
+
// Check order
|
|
64
|
+
if (parseTime(endTime) <= parseTime(startTime)) {
|
|
65
|
+
return `End time ${endTime} must be after start time ${startTime}`;
|
|
66
|
+
}
|
|
67
|
+
return null;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Auto-generate bell schedule periods based on school hours and period duration.
|
|
71
|
+
* Inserts breaks between periods.
|
|
72
|
+
*/
|
|
73
|
+
function generateDefaultPeriods(startTime, endTime, periodDuration, breakDuration = 10) {
|
|
74
|
+
const periods = [];
|
|
75
|
+
let currentTime = parseTime(startTime);
|
|
76
|
+
const schoolEnd = parseTime(endTime);
|
|
77
|
+
let periodNumber = 1;
|
|
78
|
+
while (currentTime + periodDuration <= schoolEnd) {
|
|
79
|
+
// Add class period
|
|
80
|
+
periods.push({
|
|
81
|
+
number: periodNumber,
|
|
82
|
+
startTime: formatTime(currentTime),
|
|
83
|
+
endTime: formatTime(currentTime + periodDuration),
|
|
84
|
+
type: 'class',
|
|
85
|
+
label: `Period ${periodNumber}`,
|
|
86
|
+
});
|
|
87
|
+
currentTime += periodDuration;
|
|
88
|
+
periodNumber++;
|
|
89
|
+
// Add break if there's room for another period after break
|
|
90
|
+
if (currentTime + breakDuration + periodDuration <= schoolEnd) {
|
|
91
|
+
periods.push({
|
|
92
|
+
number: periodNumber - 1, // breaks share the preceding period number
|
|
93
|
+
startTime: formatTime(currentTime),
|
|
94
|
+
endTime: formatTime(currentTime + breakDuration),
|
|
95
|
+
type: 'break',
|
|
96
|
+
label: periodNumber === 5 ? 'Lunch Break' : 'Break',
|
|
97
|
+
});
|
|
98
|
+
currentTime += breakDuration;
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
return periods;
|
|
102
|
+
}
|
|
103
|
+
/**
|
|
104
|
+
* Validate a bell schedule against school hours.
|
|
105
|
+
* Returns array of error messages (empty if valid).
|
|
106
|
+
*/
|
|
107
|
+
function validateBellSchedule(periods, schoolConfig) {
|
|
108
|
+
const errors = [];
|
|
109
|
+
const classPeriods = periods.filter(p => p.type === 'class');
|
|
110
|
+
if (classPeriods.length === 0) {
|
|
111
|
+
errors.push('Bell schedule must have at least one class period');
|
|
112
|
+
return errors;
|
|
113
|
+
}
|
|
114
|
+
// First period must not start before school start
|
|
115
|
+
const firstPeriod = classPeriods[0];
|
|
116
|
+
if (parseTime(firstPeriod.startTime) < parseTime(schoolConfig.startTime)) {
|
|
117
|
+
errors.push(`First period starts at ${firstPeriod.startTime}, before school start time ${schoolConfig.startTime}`);
|
|
118
|
+
}
|
|
119
|
+
// Last period must not end after school end
|
|
120
|
+
const lastPeriod = classPeriods[classPeriods.length - 1];
|
|
121
|
+
if (parseTime(lastPeriod.endTime) > parseTime(schoolConfig.endTime)) {
|
|
122
|
+
errors.push(`Last period ends at ${lastPeriod.endTime}, after school end time ${schoolConfig.endTime}`);
|
|
123
|
+
}
|
|
124
|
+
// Check period duration alignment (warning-level, not error)
|
|
125
|
+
for (const period of classPeriods) {
|
|
126
|
+
const duration = parseTime(period.endTime) - parseTime(period.startTime);
|
|
127
|
+
if (duration !== schoolConfig.periodDuration && duration !== schoolConfig.periodDuration * 2) {
|
|
128
|
+
// Allow single or double periods
|
|
129
|
+
errors.push(`Period ${period.number} duration (${duration}min) doesn't match configured period duration (${schoolConfig.periodDuration}min)`);
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
return errors;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=school-hours.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"school-hours.js","sourceRoot":"","sources":["../../src/utils/school-hours.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED