@aibrains/shared-types 0.15.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 (76) 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/finance/common.d.ts +1 -1
  20. package/dist/schemas/finance/common.d.ts.map +1 -1
  21. package/dist/schemas/finance/common.js +1 -1
  22. package/dist/schemas/finance/common.js.map +1 -1
  23. package/dist/schemas/finance/credit-note.schema.d.ts +127 -0
  24. package/dist/schemas/finance/credit-note.schema.d.ts.map +1 -0
  25. package/dist/schemas/finance/credit-note.schema.js +55 -0
  26. package/dist/schemas/finance/credit-note.schema.js.map +1 -0
  27. package/dist/schemas/finance/discount-rule.schema.d.ts +352 -0
  28. package/dist/schemas/finance/discount-rule.schema.d.ts.map +1 -0
  29. package/dist/schemas/finance/discount-rule.schema.js +57 -0
  30. package/dist/schemas/finance/discount-rule.schema.js.map +1 -0
  31. package/dist/schemas/finance/fee-structure.schema.d.ts +36 -6
  32. package/dist/schemas/finance/fee-structure.schema.d.ts.map +1 -1
  33. package/dist/schemas/finance/fee-structure.schema.js +10 -0
  34. package/dist/schemas/finance/fee-structure.schema.js.map +1 -1
  35. package/dist/schemas/finance/index.d.ts +3 -0
  36. package/dist/schemas/finance/index.d.ts.map +1 -1
  37. package/dist/schemas/finance/index.js +3 -0
  38. package/dist/schemas/finance/index.js.map +1 -1
  39. package/dist/schemas/finance/invoice.schema.d.ts +63 -3
  40. package/dist/schemas/finance/invoice.schema.d.ts.map +1 -1
  41. package/dist/schemas/finance/invoice.schema.js +10 -1
  42. package/dist/schemas/finance/invoice.schema.js.map +1 -1
  43. package/dist/schemas/finance/payment.schema.d.ts +22 -22
  44. package/dist/schemas/finance/refund.schema.d.ts +99 -0
  45. package/dist/schemas/finance/refund.schema.d.ts.map +1 -0
  46. package/dist/schemas/finance/refund.schema.js +47 -0
  47. package/dist/schemas/finance/refund.schema.js.map +1 -0
  48. package/dist/schemas/identity/academic-year.schema.d.ts +14 -14
  49. package/dist/schemas/identity/department.schema.d.ts +6 -6
  50. package/dist/schemas/identity/index.d.ts +2 -0
  51. package/dist/schemas/identity/index.d.ts.map +1 -1
  52. package/dist/schemas/identity/index.js +4 -0
  53. package/dist/schemas/identity/index.js.map +1 -1
  54. package/dist/schemas/identity/leave.schema.d.ts +26 -26
  55. package/dist/schemas/identity/school-year.schema.d.ts +18 -18
  56. package/dist/schemas/identity/school.schema.d.ts +609 -120
  57. package/dist/schemas/identity/school.schema.d.ts.map +1 -1
  58. package/dist/schemas/identity/school.schema.js +32 -8
  59. package/dist/schemas/identity/school.schema.js.map +1 -1
  60. package/dist/utils/bikram-sambat.d.ts +68 -0
  61. package/dist/utils/bikram-sambat.d.ts.map +1 -0
  62. package/dist/utils/bikram-sambat.js +301 -0
  63. package/dist/utils/bikram-sambat.js.map +1 -0
  64. package/dist/utils/currency.d.ts +30 -8
  65. package/dist/utils/currency.d.ts.map +1 -1
  66. package/dist/utils/currency.js +93 -25
  67. package/dist/utils/currency.js.map +1 -1
  68. package/dist/utils/date-format.d.ts +20 -0
  69. package/dist/utils/date-format.d.ts.map +1 -0
  70. package/dist/utils/date-format.js +66 -0
  71. package/dist/utils/date-format.js.map +1 -0
  72. package/dist/utils/school-hours.d.ts +48 -0
  73. package/dist/utils/school-hours.d.ts.map +1 -0
  74. package/dist/utils/school-hours.js +134 -0
  75. package/dist/utils/school-hours.js.map +1 -0
  76. package/package.json +1 -1
@@ -0,0 +1,47 @@
1
+ /**
2
+ * Enrollment Billing Events
3
+ *
4
+ * Event interfaces for enrollment→billing integration.
5
+ * Published by academics service, consumed by finance service.
6
+ */
7
+ export interface StudentEnrolledEvent {
8
+ eventType: 'student.enrolled';
9
+ tenantId: string;
10
+ schoolId: string;
11
+ studentId: string;
12
+ gradeLevel: string;
13
+ enrollmentDate: string;
14
+ academicYearId: string;
15
+ sectionId?: string;
16
+ }
17
+ export interface StudentSectionAssignedEvent {
18
+ eventType: 'student.section.assigned';
19
+ tenantId: string;
20
+ schoolId: string;
21
+ studentId: string;
22
+ sectionId: string;
23
+ courseId: string;
24
+ enrollmentDate: string;
25
+ academicYearId: string;
26
+ }
27
+ export interface StudentWithdrawnEvent {
28
+ eventType: 'student.withdrawn';
29
+ tenantId: string;
30
+ schoolId: string;
31
+ studentId: string;
32
+ withdrawalDate: string;
33
+ academicYearId: string;
34
+ reason?: string;
35
+ }
36
+ export interface StudentTransferredEvent {
37
+ eventType: 'student.transferred';
38
+ tenantId: string;
39
+ schoolId: string;
40
+ studentId: string;
41
+ fromSectionId: string;
42
+ toSectionId: string;
43
+ transferDate: string;
44
+ academicYearId: string;
45
+ }
46
+ export type EnrollmentBillingEvent = StudentEnrolledEvent | StudentSectionAssignedEvent | StudentWithdrawnEvent | StudentTransferredEvent;
47
+ //# sourceMappingURL=enrollment-billing.events.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollment-billing.events.d.ts","sourceRoot":"","sources":["../../src/events/enrollment-billing.events.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,MAAM,WAAW,oBAAoB;IACnC,SAAS,EAAE,kBAAkB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,UAAU,EAAE,MAAM,CAAC;IACnB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,2BAA2B;IAC1C,SAAS,EAAE,0BAA0B,CAAC;IACtC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,qBAAqB;IACpC,SAAS,EAAE,mBAAmB,CAAC;IAC/B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;IACvB,cAAc,EAAE,MAAM,CAAC;IACvB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,qBAAqB,CAAC;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IACpB,YAAY,EAAE,MAAM,CAAC;IACrB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,MAAM,sBAAsB,GAC9B,oBAAoB,GACpB,2BAA2B,GAC3B,qBAAqB,GACrB,uBAAuB,CAAC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ /**
3
+ * Enrollment Billing Events
4
+ *
5
+ * Event interfaces for enrollment→billing integration.
6
+ * Published by academics service, consumed by finance service.
7
+ */
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ //# sourceMappingURL=enrollment-billing.events.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"enrollment-billing.events.js","sourceRoot":"","sources":["../../src/events/enrollment-billing.events.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
@@ -0,0 +1,120 @@
1
+ /**
2
+ * Country Configuration Registry
3
+ *
4
+ * Compile-time constants defining per-country configuration for:
5
+ * - Address schema (fields, labels, validation)
6
+ * - Timezones
7
+ * - Default locale, calendar system, currency
8
+ * - Default school days
9
+ * - Date format, phone format
10
+ *
11
+ * This is the SINGLE SOURCE OF TRUTH for country-specific behavior.
12
+ * UI rendering and backend validation both consume this registry.
13
+ */
14
+ export interface AddressFieldConfig {
15
+ key: string;
16
+ label: string;
17
+ required: boolean;
18
+ maxLength: number;
19
+ placeholder: string;
20
+ type: 'text' | 'select';
21
+ options?: {
22
+ value: string;
23
+ label: string;
24
+ }[];
25
+ }
26
+ export type CalendarSystem = 'gregorian' | 'bikram_sambat';
27
+ export interface CountryConfig {
28
+ /** ISO 3166-1 alpha-3 code */
29
+ code: string;
30
+ /** Display name */
31
+ name: string;
32
+ /** ISO 3166-1 alpha-2 code */
33
+ iso2: string;
34
+ /** Available timezones for this country */
35
+ timezones: {
36
+ value: string;
37
+ label: string;
38
+ }[];
39
+ /** Default timezone */
40
+ defaultTimezone: string;
41
+ /** Default locale identifier */
42
+ defaultLocale: string;
43
+ /** Default calendar system */
44
+ defaultCalendarSystem: CalendarSystem;
45
+ /** Default currency code */
46
+ defaultCurrency: string;
47
+ /** Default school operating days (0=Sun..6=Sat) */
48
+ defaultSchoolDays: number[];
49
+ /** Date display format */
50
+ dateFormat: string;
51
+ /** Phone number prefix */
52
+ phonePrefix: string;
53
+ /** Phone number validation regex (stored as string for JSON serializability) */
54
+ phonePattern: string;
55
+ /** Address fields rendered in forms */
56
+ addressFields: AddressFieldConfig[];
57
+ /** Default time format */
58
+ defaultTimeFormat: '12h' | '24h';
59
+ }
60
+ export declare const NEPAL_PROVINCES: {
61
+ value: string;
62
+ label: string;
63
+ }[];
64
+ export declare const NEPAL_PROVINCE_DISTRICTS: Record<string, string[]>;
65
+ /** Flat list of all 77 Nepal districts with their province */
66
+ export declare const NEPAL_DISTRICTS: {
67
+ value: string;
68
+ label: string;
69
+ province: string;
70
+ }[];
71
+ /** Country configuration registry — compile-time constant */
72
+ export declare const COUNTRY_REGISTRY: Record<string, CountryConfig>;
73
+ /**
74
+ * Get configuration for a country by ISO 3166-1 alpha-3 code.
75
+ * Returns generic fallback for unknown country codes.
76
+ */
77
+ export declare function getCountryConfig(code: string): CountryConfig;
78
+ /**
79
+ * Country options for dropdown selects, derived from registry.
80
+ * Replaces hardcoded COUNTRY_OPTIONS.
81
+ */
82
+ export declare const COUNTRY_OPTIONS: {
83
+ value: string;
84
+ label: string;
85
+ }[];
86
+ /**
87
+ * Get timezone options for a specific country.
88
+ */
89
+ export declare function getTimezoneOptionsForCountry(countryCode: string): {
90
+ value: string;
91
+ label: string;
92
+ }[];
93
+ /**
94
+ * Get locale options for a country.
95
+ * Always includes English as a fallback option.
96
+ */
97
+ export declare function getLocaleOptionsForCountry(countryCode: string): {
98
+ value: string;
99
+ label: string;
100
+ }[];
101
+ /**
102
+ * Get all defaults for a country — used when creating a school.
103
+ */
104
+ export declare function getDefaultsForCountry(countryCode: string): {
105
+ timezone: string;
106
+ locale: string;
107
+ calendarSystem: CalendarSystem;
108
+ schoolDays: number[];
109
+ dateFormat: string;
110
+ timeFormat: '12h' | '24h';
111
+ currency: string;
112
+ };
113
+ /**
114
+ * Validate a phone number against a country's pattern.
115
+ * Constructs RegExp at validation time from the stored string pattern.
116
+ */
117
+ export declare function validatePhoneForCountry(phone: string, countryCode: string): boolean;
118
+ /** US state abbreviation → timezone mapping (preserved for backward compat) */
119
+ export declare const STATE_TIMEZONE_MAP: Record<string, string>;
120
+ //# sourceMappingURL=country-config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"country-config.d.ts","sourceRoot":"","sources":["../../src/identity/country-config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,404 @@
1
+ "use strict";
2
+ /**
3
+ * Country Configuration Registry
4
+ *
5
+ * Compile-time constants defining per-country configuration for:
6
+ * - Address schema (fields, labels, validation)
7
+ * - Timezones
8
+ * - Default locale, calendar system, currency
9
+ * - Default school days
10
+ * - Date format, phone format
11
+ *
12
+ * This is the SINGLE SOURCE OF TRUTH for country-specific behavior.
13
+ * UI rendering and backend validation both consume this registry.
14
+ */
15
+ Object.defineProperty(exports, "__esModule", { value: true });
16
+ exports.STATE_TIMEZONE_MAP = exports.COUNTRY_OPTIONS = exports.COUNTRY_REGISTRY = exports.NEPAL_DISTRICTS = exports.NEPAL_PROVINCE_DISTRICTS = exports.NEPAL_PROVINCES = void 0;
17
+ exports.getCountryConfig = getCountryConfig;
18
+ exports.getTimezoneOptionsForCountry = getTimezoneOptionsForCountry;
19
+ exports.getLocaleOptionsForCountry = getLocaleOptionsForCountry;
20
+ exports.getDefaultsForCountry = getDefaultsForCountry;
21
+ exports.validatePhoneForCountry = validatePhoneForCountry;
22
+ // ============================================================================
23
+ // NEPAL GEOGRAPHIC DATA (provinces & districts)
24
+ // ============================================================================
25
+ exports.NEPAL_PROVINCES = [
26
+ { value: 'Koshi', label: 'Koshi Province' },
27
+ { value: 'Madhesh', label: 'Madhesh Province' },
28
+ { value: 'Bagmati', label: 'Bagmati Province' },
29
+ { value: 'Gandaki', label: 'Gandaki Province' },
30
+ { value: 'Lumbini', label: 'Lumbini Province' },
31
+ { value: 'Karnali', label: 'Karnali Province' },
32
+ { value: 'Sudurpashchim', label: 'Sudurpashchim Province' },
33
+ ];
34
+ exports.NEPAL_PROVINCE_DISTRICTS = {
35
+ Koshi: [
36
+ 'Bhojpur', 'Dhankuta', 'Ilam', 'Jhapa', 'Khotang', 'Morang',
37
+ 'Okhaldhunga', 'Panchthar', 'Sankhuwasabha', 'Solukhumbu',
38
+ 'Sunsari', 'Taplejung', 'Terhathum', 'Udayapur',
39
+ ],
40
+ Madhesh: [
41
+ 'Bara', 'Dhanusha', 'Mahottari', 'Parsa', 'Rautahat',
42
+ 'Saptari', 'Sarlahi', 'Siraha',
43
+ ],
44
+ Bagmati: [
45
+ 'Bhaktapur', 'Chitwan', 'Dhading', 'Dolakha', 'Kathmandu',
46
+ 'Kavrepalanchok', 'Lalitpur', 'Makwanpur', 'Nuwakot',
47
+ 'Ramechhap', 'Rasuwa', 'Sindhuli', 'Sindhupalchok',
48
+ ],
49
+ Gandaki: [
50
+ 'Baglung', 'Gorkha', 'Kaski', 'Lamjung', 'Manang',
51
+ 'Mustang', 'Myagdi', 'Nawalpur', 'Parbat', 'Syangja', 'Tanahun',
52
+ ],
53
+ Lumbini: [
54
+ 'Arghakhanchi', 'Banke', 'Bardiya', 'Dang', 'Eastern Rukum',
55
+ 'Gulmi', 'Kapilvastu', 'Nawalparasi West', 'Palpa',
56
+ 'Pyuthan', 'Rolpa', 'Rupandehi',
57
+ ],
58
+ Karnali: [
59
+ 'Dailekh', 'Dolpa', 'Humla', 'Jajarkot', 'Jumla',
60
+ 'Kalikot', 'Mugu', 'Salyan', 'Surkhet', 'Western Rukum',
61
+ ],
62
+ Sudurpashchim: [
63
+ 'Achham', 'Baitadi', 'Bajhang', 'Bajura', 'Dadeldhura',
64
+ 'Darchula', 'Doti', 'Kailali', 'Kanchanpur',
65
+ ],
66
+ };
67
+ /** Flat list of all 77 Nepal districts with their province */
68
+ exports.NEPAL_DISTRICTS = Object.entries(exports.NEPAL_PROVINCE_DISTRICTS).flatMap(([province, districts]) => districts.map(d => ({ value: d, label: d, province })));
69
+ // ============================================================================
70
+ // US GEOGRAPHIC DATA
71
+ // ============================================================================
72
+ const US_STATES = [
73
+ { value: 'AL', label: 'Alabama' }, { value: 'AK', label: 'Alaska' },
74
+ { value: 'AZ', label: 'Arizona' }, { value: 'AR', label: 'Arkansas' },
75
+ { value: 'CA', label: 'California' }, { value: 'CO', label: 'Colorado' },
76
+ { value: 'CT', label: 'Connecticut' }, { value: 'DE', label: 'Delaware' },
77
+ { value: 'DC', label: 'District of Columbia' }, { value: 'FL', label: 'Florida' },
78
+ { value: 'GA', label: 'Georgia' }, { value: 'HI', label: 'Hawaii' },
79
+ { value: 'ID', label: 'Idaho' }, { value: 'IL', label: 'Illinois' },
80
+ { value: 'IN', label: 'Indiana' }, { value: 'IA', label: 'Iowa' },
81
+ { value: 'KS', label: 'Kansas' }, { value: 'KY', label: 'Kentucky' },
82
+ { value: 'LA', label: 'Louisiana' }, { value: 'ME', label: 'Maine' },
83
+ { value: 'MD', label: 'Maryland' }, { value: 'MA', label: 'Massachusetts' },
84
+ { value: 'MI', label: 'Michigan' }, { value: 'MN', label: 'Minnesota' },
85
+ { value: 'MS', label: 'Mississippi' }, { value: 'MO', label: 'Missouri' },
86
+ { value: 'MT', label: 'Montana' }, { value: 'NE', label: 'Nebraska' },
87
+ { value: 'NV', label: 'Nevada' }, { value: 'NH', label: 'New Hampshire' },
88
+ { value: 'NJ', label: 'New Jersey' }, { value: 'NM', label: 'New Mexico' },
89
+ { value: 'NY', label: 'New York' }, { value: 'NC', label: 'North Carolina' },
90
+ { value: 'ND', label: 'North Dakota' }, { value: 'OH', label: 'Ohio' },
91
+ { value: 'OK', label: 'Oklahoma' }, { value: 'OR', label: 'Oregon' },
92
+ { value: 'PA', label: 'Pennsylvania' }, { value: 'RI', label: 'Rhode Island' },
93
+ { value: 'SC', label: 'South Carolina' }, { value: 'SD', label: 'South Dakota' },
94
+ { value: 'TN', label: 'Tennessee' }, { value: 'TX', label: 'Texas' },
95
+ { value: 'UT', label: 'Utah' }, { value: 'VT', label: 'Vermont' },
96
+ { value: 'VA', label: 'Virginia' }, { value: 'WA', label: 'Washington' },
97
+ { value: 'WV', label: 'West Virginia' }, { value: 'WI', label: 'Wisconsin' },
98
+ { value: 'WY', label: 'Wyoming' },
99
+ ];
100
+ // ============================================================================
101
+ // COUNTRY CONFIGURATIONS
102
+ // ============================================================================
103
+ const NEPAL_CONFIG = {
104
+ code: 'NPL',
105
+ name: 'Nepal',
106
+ iso2: 'NP',
107
+ timezones: [
108
+ { value: 'Asia/Kathmandu', label: 'Nepal Time (NPT, UTC+5:45)' },
109
+ ],
110
+ defaultTimezone: 'Asia/Kathmandu',
111
+ defaultLocale: 'ne-NP',
112
+ defaultCalendarSystem: 'bikram_sambat',
113
+ defaultCurrency: 'NPR',
114
+ defaultSchoolDays: [0, 1, 2, 3, 4, 5], // Sun-Fri
115
+ dateFormat: 'YYYY/MM/DD',
116
+ phonePrefix: '+977',
117
+ phonePattern: '^(\\+977)?[0-9]{7,10}$',
118
+ defaultTimeFormat: '24h',
119
+ addressFields: [
120
+ { key: 'street1', label: 'Street / Tole', required: true, maxLength: 200, placeholder: 'Street or Tole name', type: 'text' },
121
+ { key: 'wardNumber', label: 'Ward No.', required: false, maxLength: 10, placeholder: 'e.g., 5', type: 'text' },
122
+ { key: 'municipality', label: 'Municipality / VDC', required: false, maxLength: 100, placeholder: 'e.g., Kathmandu Metropolitan City', type: 'text' },
123
+ { key: 'district', label: 'District', required: true, maxLength: 100, placeholder: 'Select district', type: 'select', options: exports.NEPAL_DISTRICTS.map(d => ({ value: d.value, label: d.label })) },
124
+ { key: 'province', label: 'Province', required: true, maxLength: 100, placeholder: 'Select province', type: 'select', options: exports.NEPAL_PROVINCES },
125
+ { key: 'country', label: 'Country', required: true, maxLength: 100, placeholder: 'Nepal', type: 'text' },
126
+ ],
127
+ };
128
+ const USA_CONFIG = {
129
+ code: 'USA',
130
+ name: 'United States',
131
+ iso2: 'US',
132
+ timezones: [
133
+ { value: 'America/New_York', label: 'Eastern (ET)' },
134
+ { value: 'America/Chicago', label: 'Central (CT)' },
135
+ { value: 'America/Denver', label: 'Mountain (MT)' },
136
+ { value: 'America/Los_Angeles', label: 'Pacific (PT)' },
137
+ { value: 'America/Anchorage', label: 'Alaska (AKT)' },
138
+ { value: 'Pacific/Honolulu', label: 'Hawaii (HT)' },
139
+ ],
140
+ defaultTimezone: 'America/New_York',
141
+ defaultLocale: 'en-US',
142
+ defaultCalendarSystem: 'gregorian',
143
+ defaultCurrency: 'USD',
144
+ defaultSchoolDays: [1, 2, 3, 4, 5], // Mon-Fri
145
+ dateFormat: 'MM/DD/YYYY',
146
+ phonePrefix: '+1',
147
+ phonePattern: '^(\\+1)?[2-9]\\d{9}$',
148
+ defaultTimeFormat: '12h',
149
+ addressFields: [
150
+ { key: 'street1', label: 'Address Line 1', required: true, maxLength: 200, placeholder: '123 Main Street', type: 'text' },
151
+ { key: 'street2', label: 'Address Line 2', required: false, maxLength: 200, placeholder: 'Suite 100, Building A', type: 'text' },
152
+ { key: 'city', label: 'City', required: true, maxLength: 100, placeholder: 'Springfield', type: 'text' },
153
+ { key: 'state', label: 'State', required: true, maxLength: 2, placeholder: 'IL', type: 'select', options: US_STATES },
154
+ { key: 'zipCode', label: 'Zip Code', required: true, maxLength: 20, placeholder: '62701', type: 'text' },
155
+ { key: 'country', label: 'Country', required: true, maxLength: 100, placeholder: 'United States', type: 'text' },
156
+ ],
157
+ };
158
+ const INDIA_CONFIG = {
159
+ code: 'IND',
160
+ name: 'India',
161
+ iso2: 'IN',
162
+ timezones: [
163
+ { value: 'Asia/Kolkata', label: 'India Standard Time (IST, UTC+5:30)' },
164
+ ],
165
+ defaultTimezone: 'Asia/Kolkata',
166
+ defaultLocale: 'en-IN',
167
+ defaultCalendarSystem: 'gregorian',
168
+ defaultCurrency: 'INR',
169
+ defaultSchoolDays: [1, 2, 3, 4, 5, 6], // Mon-Sat
170
+ dateFormat: 'DD/MM/YYYY',
171
+ phonePrefix: '+91',
172
+ phonePattern: '^(\\+91)?[6-9]\\d{9}$',
173
+ defaultTimeFormat: '12h',
174
+ addressFields: [
175
+ { key: 'street1', label: 'Address Line 1', required: true, maxLength: 200, placeholder: 'Street address', type: 'text' },
176
+ { key: 'street2', label: 'Address Line 2', required: false, maxLength: 200, placeholder: 'Landmark, area', type: 'text' },
177
+ { key: 'city', label: 'City', required: true, maxLength: 100, placeholder: 'Mumbai', type: 'text' },
178
+ { key: 'state', label: 'State', required: true, maxLength: 100, placeholder: 'Maharashtra', type: 'text' },
179
+ { key: 'zipCode', label: 'PIN Code', required: true, maxLength: 10, placeholder: '400001', type: 'text' },
180
+ { key: 'country', label: 'Country', required: true, maxLength: 100, placeholder: 'India', type: 'text' },
181
+ ],
182
+ };
183
+ const GBR_CONFIG = {
184
+ code: 'GBR',
185
+ name: 'United Kingdom',
186
+ iso2: 'GB',
187
+ timezones: [
188
+ { value: 'Europe/London', label: 'Greenwich Mean Time (GMT/BST)' },
189
+ ],
190
+ defaultTimezone: 'Europe/London',
191
+ defaultLocale: 'en-GB',
192
+ defaultCalendarSystem: 'gregorian',
193
+ defaultCurrency: 'GBP',
194
+ defaultSchoolDays: [1, 2, 3, 4, 5], // Mon-Fri
195
+ dateFormat: 'DD/MM/YYYY',
196
+ phonePrefix: '+44',
197
+ phonePattern: '^(\\+44)?[0-9]{10,11}$',
198
+ defaultTimeFormat: '24h',
199
+ addressFields: [
200
+ { key: 'street1', label: 'Address Line 1', required: true, maxLength: 200, placeholder: '10 Downing Street', type: 'text' },
201
+ { key: 'street2', label: 'Address Line 2', required: false, maxLength: 200, placeholder: '', type: 'text' },
202
+ { key: 'city', label: 'City / Town', required: true, maxLength: 100, placeholder: 'London', type: 'text' },
203
+ { key: 'region', label: 'County', required: false, maxLength: 100, placeholder: 'Greater London', type: 'text' },
204
+ { key: 'zipCode', label: 'Postcode', required: true, maxLength: 10, placeholder: 'SW1A 2AA', type: 'text' },
205
+ { key: 'country', label: 'Country', required: true, maxLength: 100, placeholder: 'United Kingdom', type: 'text' },
206
+ ],
207
+ };
208
+ const CAN_CONFIG = {
209
+ code: 'CAN',
210
+ name: 'Canada',
211
+ iso2: 'CA',
212
+ timezones: [
213
+ { value: 'America/Toronto', label: 'Eastern (ET)' },
214
+ { value: 'America/Winnipeg', label: 'Central (CT)' },
215
+ { value: 'America/Edmonton', label: 'Mountain (MT)' },
216
+ { value: 'America/Vancouver', label: 'Pacific (PT)' },
217
+ { value: 'America/Halifax', label: 'Atlantic (AT)' },
218
+ { value: 'America/St_Johns', label: "Newfoundland (NT)" },
219
+ ],
220
+ defaultTimezone: 'America/Toronto',
221
+ defaultLocale: 'en-CA',
222
+ defaultCalendarSystem: 'gregorian',
223
+ defaultCurrency: 'CAD',
224
+ defaultSchoolDays: [1, 2, 3, 4, 5], // Mon-Fri
225
+ dateFormat: 'YYYY-MM-DD',
226
+ phonePrefix: '+1',
227
+ phonePattern: '^(\\+1)?[2-9]\\d{9}$',
228
+ defaultTimeFormat: '12h',
229
+ addressFields: [
230
+ { key: 'street1', label: 'Address Line 1', required: true, maxLength: 200, placeholder: '123 Main Street', type: 'text' },
231
+ { key: 'street2', label: 'Address Line 2', required: false, maxLength: 200, placeholder: '', type: 'text' },
232
+ { key: 'city', label: 'City', required: true, maxLength: 100, placeholder: 'Toronto', type: 'text' },
233
+ { key: 'state', label: 'Province', required: true, maxLength: 100, placeholder: 'ON', type: 'text' },
234
+ { key: 'zipCode', label: 'Postal Code', required: true, maxLength: 10, placeholder: 'M5V 2H1', type: 'text' },
235
+ { key: 'country', label: 'Country', required: true, maxLength: 100, placeholder: 'Canada', type: 'text' },
236
+ ],
237
+ };
238
+ const AUS_CONFIG = {
239
+ code: 'AUS',
240
+ name: 'Australia',
241
+ iso2: 'AU',
242
+ timezones: [
243
+ { value: 'Australia/Sydney', label: 'Eastern (AEST/AEDT)' },
244
+ { value: 'Australia/Adelaide', label: 'Central (ACST/ACDT)' },
245
+ { value: 'Australia/Perth', label: 'Western (AWST)' },
246
+ { value: 'Australia/Brisbane', label: 'Queensland (AEST, no DST)' },
247
+ { value: 'Australia/Darwin', label: 'Northern Territory (ACST, no DST)' },
248
+ ],
249
+ defaultTimezone: 'Australia/Sydney',
250
+ defaultLocale: 'en-AU',
251
+ defaultCalendarSystem: 'gregorian',
252
+ defaultCurrency: 'AUD',
253
+ defaultSchoolDays: [1, 2, 3, 4, 5], // Mon-Fri
254
+ dateFormat: 'DD/MM/YYYY',
255
+ phonePrefix: '+61',
256
+ phonePattern: '^(\\+61)?[0-9]{9,10}$',
257
+ defaultTimeFormat: '12h',
258
+ addressFields: [
259
+ { key: 'street1', label: 'Address Line 1', required: true, maxLength: 200, placeholder: '123 George Street', type: 'text' },
260
+ { key: 'street2', label: 'Address Line 2', required: false, maxLength: 200, placeholder: '', type: 'text' },
261
+ { key: 'city', label: 'City / Suburb', required: true, maxLength: 100, placeholder: 'Sydney', type: 'text' },
262
+ { key: 'state', label: 'State / Territory', required: true, maxLength: 10, placeholder: 'NSW', type: 'text' },
263
+ { key: 'zipCode', label: 'Postcode', required: true, maxLength: 10, placeholder: '2000', type: 'text' },
264
+ { key: 'country', label: 'Country', required: true, maxLength: 100, placeholder: 'Australia', type: 'text' },
265
+ ],
266
+ };
267
+ /** Generic fallback for unsupported countries */
268
+ const GENERIC_CONFIG = {
269
+ code: 'OTHER',
270
+ name: 'Other',
271
+ iso2: '',
272
+ timezones: [
273
+ { value: 'UTC', label: 'UTC (Coordinated Universal Time)' },
274
+ ],
275
+ defaultTimezone: 'UTC',
276
+ defaultLocale: 'en-US',
277
+ defaultCalendarSystem: 'gregorian',
278
+ defaultCurrency: 'USD',
279
+ defaultSchoolDays: [1, 2, 3, 4, 5], // Mon-Fri
280
+ dateFormat: 'YYYY-MM-DD',
281
+ phonePrefix: '+',
282
+ phonePattern: '^\\+?[0-9]{7,15}$',
283
+ defaultTimeFormat: '24h',
284
+ addressFields: [
285
+ { key: 'street1', label: 'Address Line 1', required: true, maxLength: 200, placeholder: 'Street address', type: 'text' },
286
+ { key: 'street2', label: 'Address Line 2', required: false, maxLength: 200, placeholder: '', type: 'text' },
287
+ { key: 'city', label: 'City', required: true, maxLength: 100, placeholder: 'City', type: 'text' },
288
+ { key: 'region', label: 'State / Region', required: false, maxLength: 100, placeholder: 'State or region', type: 'text' },
289
+ { key: 'zipCode', label: 'Postal Code', required: false, maxLength: 20, placeholder: 'Postal code', type: 'text' },
290
+ { key: 'country', label: 'Country', required: true, maxLength: 100, placeholder: 'Country', type: 'text' },
291
+ ],
292
+ };
293
+ // ============================================================================
294
+ // REGISTRY
295
+ // ============================================================================
296
+ /** Country configuration registry — compile-time constant */
297
+ exports.COUNTRY_REGISTRY = {
298
+ NPL: NEPAL_CONFIG,
299
+ USA: USA_CONFIG,
300
+ IND: INDIA_CONFIG,
301
+ GBR: GBR_CONFIG,
302
+ CAN: CAN_CONFIG,
303
+ AUS: AUS_CONFIG,
304
+ OTHER: GENERIC_CONFIG,
305
+ };
306
+ /**
307
+ * Get configuration for a country by ISO 3166-1 alpha-3 code.
308
+ * Returns generic fallback for unknown country codes.
309
+ */
310
+ function getCountryConfig(code) {
311
+ return exports.COUNTRY_REGISTRY[code] || GENERIC_CONFIG;
312
+ }
313
+ /**
314
+ * Country options for dropdown selects, derived from registry.
315
+ * Replaces hardcoded COUNTRY_OPTIONS.
316
+ */
317
+ exports.COUNTRY_OPTIONS = Object.values(exports.COUNTRY_REGISTRY).map(c => ({
318
+ value: c.code,
319
+ label: c.name,
320
+ }));
321
+ /**
322
+ * Get timezone options for a specific country.
323
+ */
324
+ function getTimezoneOptionsForCountry(countryCode) {
325
+ return getCountryConfig(countryCode).timezones;
326
+ }
327
+ /**
328
+ * Get locale options for a country.
329
+ * Always includes English as a fallback option.
330
+ */
331
+ function getLocaleOptionsForCountry(countryCode) {
332
+ const config = getCountryConfig(countryCode);
333
+ const options = [];
334
+ // Add country-specific locale first
335
+ if (config.defaultLocale !== 'en-US') {
336
+ const localeLabels = {
337
+ 'ne-NP': 'Nepali (नेपाली)',
338
+ 'en-IN': 'English (India)',
339
+ 'en-GB': 'English (UK)',
340
+ 'en-CA': 'English (Canada)',
341
+ 'en-AU': 'English (Australia)',
342
+ };
343
+ options.push({
344
+ value: config.defaultLocale,
345
+ label: localeLabels[config.defaultLocale] || config.defaultLocale,
346
+ });
347
+ }
348
+ // Always include en-US
349
+ options.push({ value: 'en-US', label: 'English (US)' });
350
+ return options;
351
+ }
352
+ /**
353
+ * Get all defaults for a country — used when creating a school.
354
+ */
355
+ function getDefaultsForCountry(countryCode) {
356
+ const config = getCountryConfig(countryCode);
357
+ return {
358
+ timezone: config.defaultTimezone,
359
+ locale: config.defaultLocale,
360
+ calendarSystem: config.defaultCalendarSystem,
361
+ schoolDays: config.defaultSchoolDays,
362
+ dateFormat: config.dateFormat,
363
+ timeFormat: config.defaultTimeFormat,
364
+ currency: config.defaultCurrency,
365
+ };
366
+ }
367
+ /**
368
+ * Validate a phone number against a country's pattern.
369
+ * Constructs RegExp at validation time from the stored string pattern.
370
+ */
371
+ function validatePhoneForCountry(phone, countryCode) {
372
+ const config = getCountryConfig(countryCode);
373
+ try {
374
+ return new RegExp(config.phonePattern).test(phone);
375
+ }
376
+ catch (_a) {
377
+ return true; // If pattern is invalid, don't block
378
+ }
379
+ }
380
+ /** US state abbreviation → timezone mapping (preserved for backward compat) */
381
+ exports.STATE_TIMEZONE_MAP = {
382
+ CT: 'America/New_York', DE: 'America/New_York', FL: 'America/New_York',
383
+ GA: 'America/New_York', ME: 'America/New_York', MD: 'America/New_York',
384
+ MA: 'America/New_York', NH: 'America/New_York', NJ: 'America/New_York',
385
+ NY: 'America/New_York', NC: 'America/New_York', OH: 'America/New_York',
386
+ PA: 'America/New_York', RI: 'America/New_York', SC: 'America/New_York',
387
+ VT: 'America/New_York', VA: 'America/New_York', WV: 'America/New_York',
388
+ DC: 'America/New_York',
389
+ AL: 'America/Chicago', AR: 'America/Chicago', IL: 'America/Chicago',
390
+ IA: 'America/Chicago', KS: 'America/Chicago', KY: 'America/Chicago',
391
+ LA: 'America/Chicago', MN: 'America/Chicago', MS: 'America/Chicago',
392
+ MO: 'America/Chicago', NE: 'America/Chicago', ND: 'America/Chicago',
393
+ OK: 'America/Chicago', SD: 'America/Chicago', TN: 'America/Chicago',
394
+ TX: 'America/Chicago', WI: 'America/Chicago', IN: 'America/New_York',
395
+ MI: 'America/New_York',
396
+ AZ: 'America/Denver', CO: 'America/Denver', ID: 'America/Denver',
397
+ MT: 'America/Denver', NM: 'America/Denver', UT: 'America/Denver',
398
+ WY: 'America/Denver',
399
+ CA: 'America/Los_Angeles', NV: 'America/Los_Angeles',
400
+ OR: 'America/Los_Angeles', WA: 'America/Los_Angeles',
401
+ AK: 'America/Anchorage',
402
+ HI: 'Pacific/Honolulu',
403
+ };
404
+ //# sourceMappingURL=country-config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"country-config.js","sourceRoot":"","sources":["../../src/identity/country-config.ts"],"names":[],"mappings":"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"}