reddy-api-srm 1.0.1

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 (131) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +299 -0
  3. package/dist/src/auth/validatePassword.d.ts +3 -0
  4. package/dist/src/auth/validatePassword.d.ts.map +1 -0
  5. package/dist/src/auth/validatePassword.js +56 -0
  6. package/dist/src/auth/validatePassword.js.map +1 -0
  7. package/dist/src/auth/validateUser.d.ts +3 -0
  8. package/dist/src/auth/validateUser.d.ts.map +1 -0
  9. package/dist/src/auth/validateUser.js +42 -0
  10. package/dist/src/auth/validateUser.js.map +1 -0
  11. package/dist/src/fetch/fetchAttendance.d.ts +2 -0
  12. package/dist/src/fetch/fetchAttendance.d.ts.map +1 -0
  13. package/dist/src/fetch/fetchAttendance.js +42 -0
  14. package/dist/src/fetch/fetchAttendance.js.map +1 -0
  15. package/dist/src/fetch/fetchCalender.d.ts +2 -0
  16. package/dist/src/fetch/fetchCalender.d.ts.map +1 -0
  17. package/dist/src/fetch/fetchCalender.js +46 -0
  18. package/dist/src/fetch/fetchCalender.js.map +1 -0
  19. package/dist/src/fetch/fetchCourseDetails.d.ts +2 -0
  20. package/dist/src/fetch/fetchCourseDetails.d.ts.map +1 -0
  21. package/dist/src/fetch/fetchCourseDetails.js +49 -0
  22. package/dist/src/fetch/fetchCourseDetails.js.map +1 -0
  23. package/dist/src/fetch/fetchDayOrder.d.ts +2 -0
  24. package/dist/src/fetch/fetchDayOrder.d.ts.map +1 -0
  25. package/dist/src/fetch/fetchDayOrder.js +42 -0
  26. package/dist/src/fetch/fetchDayOrder.js.map +1 -0
  27. package/dist/src/fetch/fetchLogout.d.ts +5 -0
  28. package/dist/src/fetch/fetchLogout.d.ts.map +1 -0
  29. package/dist/src/fetch/fetchLogout.js +15 -0
  30. package/dist/src/fetch/fetchLogout.js.map +1 -0
  31. package/dist/src/fetch/fetchMarks.d.ts +2 -0
  32. package/dist/src/fetch/fetchMarks.d.ts.map +1 -0
  33. package/dist/src/fetch/fetchMarks.js +42 -0
  34. package/dist/src/fetch/fetchMarks.js.map +1 -0
  35. package/dist/src/fetch/fetchTimetable.d.ts +2 -0
  36. package/dist/src/fetch/fetchTimetable.d.ts.map +1 -0
  37. package/dist/src/fetch/fetchTimetable.js +49 -0
  38. package/dist/src/fetch/fetchTimetable.js.map +1 -0
  39. package/dist/src/fetch/fetchUserInfo.d.ts +2 -0
  40. package/dist/src/fetch/fetchUserInfo.d.ts.map +1 -0
  41. package/dist/src/fetch/fetchUserInfo.js +43 -0
  42. package/dist/src/fetch/fetchUserInfo.js.map +1 -0
  43. package/dist/src/index.d.ts +13 -0
  44. package/dist/src/index.d.ts.map +1 -0
  45. package/dist/src/index.js +112 -0
  46. package/dist/src/index.js.map +1 -0
  47. package/dist/src/parser/parseAttendance.d.ts +3 -0
  48. package/dist/src/parser/parseAttendance.d.ts.map +1 -0
  49. package/dist/src/parser/parseAttendance.js +85 -0
  50. package/dist/src/parser/parseAttendance.js.map +1 -0
  51. package/dist/src/parser/parseCalender.d.ts +3 -0
  52. package/dist/src/parser/parseCalender.d.ts.map +1 -0
  53. package/dist/src/parser/parseCalender.js +98 -0
  54. package/dist/src/parser/parseCalender.js.map +1 -0
  55. package/dist/src/parser/parseCourse.d.ts +3 -0
  56. package/dist/src/parser/parseCourse.d.ts.map +1 -0
  57. package/dist/src/parser/parseCourse.js +88 -0
  58. package/dist/src/parser/parseCourse.js.map +1 -0
  59. package/dist/src/parser/parseDayOrder.d.ts +3 -0
  60. package/dist/src/parser/parseDayOrder.d.ts.map +1 -0
  61. package/dist/src/parser/parseDayOrder.js +71 -0
  62. package/dist/src/parser/parseDayOrder.js.map +1 -0
  63. package/dist/src/parser/parseMarks.d.ts +3 -0
  64. package/dist/src/parser/parseMarks.d.ts.map +1 -0
  65. package/dist/src/parser/parseMarks.js +100 -0
  66. package/dist/src/parser/parseMarks.js.map +1 -0
  67. package/dist/src/parser/parseTimetable.d.ts +3 -0
  68. package/dist/src/parser/parseTimetable.d.ts.map +1 -0
  69. package/dist/src/parser/parseTimetable.js +123 -0
  70. package/dist/src/parser/parseTimetable.js.map +1 -0
  71. package/dist/src/parser/parseUserInfo.d.ts +3 -0
  72. package/dist/src/parser/parseUserInfo.d.ts.map +1 -0
  73. package/dist/src/parser/parseUserInfo.js +75 -0
  74. package/dist/src/parser/parseUserInfo.js.map +1 -0
  75. package/dist/src/type/attendance.d.ts +21 -0
  76. package/dist/src/type/attendance.d.ts.map +1 -0
  77. package/dist/src/type/attendance.js +3 -0
  78. package/dist/src/type/attendance.js.map +1 -0
  79. package/dist/src/type/auth.d.ts +48 -0
  80. package/dist/src/type/auth.d.ts.map +1 -0
  81. package/dist/src/type/auth.js +3 -0
  82. package/dist/src/type/auth.js.map +1 -0
  83. package/dist/src/type/calendar.d.ts +16 -0
  84. package/dist/src/type/calendar.d.ts.map +1 -0
  85. package/dist/src/type/calendar.js +3 -0
  86. package/dist/src/type/calendar.js.map +1 -0
  87. package/dist/src/type/common.d.ts +31 -0
  88. package/dist/src/type/common.d.ts.map +1 -0
  89. package/dist/src/type/common.js +3 -0
  90. package/dist/src/type/common.js.map +1 -0
  91. package/dist/src/type/course.d.ts +17 -0
  92. package/dist/src/type/course.d.ts.map +1 -0
  93. package/dist/src/type/course.js +3 -0
  94. package/dist/src/type/course.js.map +1 -0
  95. package/dist/src/type/dayOrder.d.ts +6 -0
  96. package/dist/src/type/dayOrder.d.ts.map +1 -0
  97. package/dist/src/type/dayOrder.js +3 -0
  98. package/dist/src/type/dayOrder.js.map +1 -0
  99. package/dist/src/type/index.d.ts +11 -0
  100. package/dist/src/type/index.d.ts.map +1 -0
  101. package/dist/src/type/index.js +27 -0
  102. package/dist/src/type/index.js.map +1 -0
  103. package/dist/src/type/marks.d.ts +20 -0
  104. package/dist/src/type/marks.d.ts.map +1 -0
  105. package/dist/src/type/marks.js +3 -0
  106. package/dist/src/type/marks.js.map +1 -0
  107. package/dist/src/type/timetable.d.ts +27 -0
  108. package/dist/src/type/timetable.d.ts.map +1 -0
  109. package/dist/src/type/timetable.js +3 -0
  110. package/dist/src/type/timetable.js.map +1 -0
  111. package/dist/src/type/types.d.ts +2 -0
  112. package/dist/src/type/types.d.ts.map +1 -0
  113. package/dist/src/type/types.js +20 -0
  114. package/dist/src/type/types.js.map +1 -0
  115. package/dist/src/type/user.d.ts +16 -0
  116. package/dist/src/type/user.d.ts.map +1 -0
  117. package/dist/src/type/user.js +3 -0
  118. package/dist/src/type/user.js.map +1 -0
  119. package/dist/utils/attendanceStatus.d.ts +6 -0
  120. package/dist/utils/attendanceStatus.d.ts.map +1 -0
  121. package/dist/utils/attendanceStatus.js +26 -0
  122. package/dist/utils/attendanceStatus.js.map +1 -0
  123. package/dist/utils/data.d.ts +18 -0
  124. package/dist/utils/data.d.ts.map +1 -0
  125. package/dist/utils/data.js +77 -0
  126. package/dist/utils/data.js.map +1 -0
  127. package/dist/utils/dynamicUrl.d.ts +3 -0
  128. package/dist/utils/dynamicUrl.d.ts.map +1 -0
  129. package/dist/utils/dynamicUrl.js +45 -0
  130. package/dist/utils/dynamicUrl.js.map +1 -0
  131. package/package.json +54 -0
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseCourseDetails = parseCourseDetails;
37
+ const cheerio = __importStar(require("cheerio"));
38
+ async function parseCourseDetails(response) {
39
+ try {
40
+ const match = response.match(/pageSanitizer\.sanitize\('(.*)'\);/s);
41
+ if (!match || !match[1]) {
42
+ return { error: "Failed to extract course details", status: 404 };
43
+ }
44
+ const encodedHtml = match[1];
45
+ const decodedHtml = encodedHtml
46
+ .replace(/\\x([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)))
47
+ .replace(/\\\\/g, "")
48
+ .replace(/\\'/g, "'");
49
+ const $ = cheerio.load(decodedHtml);
50
+ let batch = "";
51
+ try {
52
+ batch = $("td:contains('Batch:')").next("td").find("font").text().trim();
53
+ }
54
+ catch {
55
+ batch = "";
56
+ }
57
+ const courseList = Array.from($(".course_tbl tr").slice(1)).map((row) => {
58
+ const columns = $(row).find("td");
59
+ const get = (idx) => columns[idx] ? $(columns[idx]).text().trim() : "";
60
+ const getFormat = (idx) => get(idx).length === 0 ? "NA" : get(idx);
61
+ const slotRaw = get(8);
62
+ const sortedSlot = slotRaw
63
+ ? slotRaw
64
+ .split("-")
65
+ .map((s) => s.trim())
66
+ .filter(Boolean)
67
+ : [];
68
+ return {
69
+ courseCode: getFormat(1),
70
+ courseTitle: getFormat(2),
71
+ courseCredit: getFormat(3),
72
+ courseCategory: getFormat(5),
73
+ courseType: getFormat(6),
74
+ courseFaculty: getFormat(7),
75
+ courseSlot: sortedSlot,
76
+ courseRoomNo: getFormat(10).startsWith("AY")
77
+ ? getFormat(9)
78
+ : getFormat(10),
79
+ };
80
+ });
81
+ return { courseList, batch, status: 200 };
82
+ }
83
+ catch (error) {
84
+ console.error("Error parsing course details:", error);
85
+ return { error: "Failed to parse course details", status: 500 };
86
+ }
87
+ }
88
+ //# sourceMappingURL=parseCourse.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseCourse.js","sourceRoot":"","sources":["../../../src/parser/parseCourse.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,gDA6DC;AAhED,iDAAmC;AAG5B,KAAK,UAAU,kBAAkB,CACtC,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,kCAAkC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACpE,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,WAAW,GAAG,WAAW;aAC5B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAS,EAAE,GAAW,EAAE,EAAE,CAC1D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACvC;aACA,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAExB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpC,IAAI,KAAK,GAAG,EAAE,CAAC;QACf,IAAI,CAAC;YACH,KAAK,GAAG,CAAC,CAAC,uBAAuB,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAC3E,CAAC;QAAC,MAAM,CAAC;YACP,KAAK,GAAG,EAAE,CAAC;QACb,CAAC;QAED,MAAM,UAAU,GAAmB,KAAK,CAAC,IAAI,CAC3C,CAAC,CAAC,gBAAgB,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAC7B,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;YACZ,MAAM,OAAO,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAClC,MAAM,GAAG,GAAG,CAAC,GAAW,EAAE,EAAE,CAC1B,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACpD,MAAM,SAAS,GAAG,CAAC,GAAW,EAAE,EAAE,CAChC,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,KAAK,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC;YAC1C,MAAM,OAAO,GAAG,GAAG,CAAC,CAAC,CAAC,CAAC;YACvB,MAAM,UAAU,GAAG,OAAO;gBACxB,CAAC,CAAC,OAAO;qBACJ,KAAK,CAAC,GAAG,CAAC;qBACV,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC;qBACpB,MAAM,CAAC,OAAO,CAAC;gBACpB,CAAC,CAAC,EAAE,CAAC;YACP,OAAO;gBACL,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;gBACxB,WAAW,EAAE,SAAS,CAAC,CAAC,CAAC;gBACzB,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC1B,cAAc,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC5B,UAAU,EAAE,SAAS,CAAC,CAAC,CAAC;gBACxB,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;gBAC3B,UAAU,EAAE,UAAU;gBACtB,YAAY,EAAE,SAAS,CAAC,EAAE,CAAC,CAAC,UAAU,CAAC,IAAI,CAAC;oBAC1C,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC;oBACd,CAAC,CAAC,SAAS,CAAC,EAAE,CAAC;aAClB,CAAC;QACJ,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC5C,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,+BAA+B,EAAE,KAAK,CAAC,CAAC;QACtD,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAClE,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { DayOrderResponse } from "../type/dayOrder";
2
+ export declare function parseDayOrder(response: string): Promise<DayOrderResponse>;
3
+ //# sourceMappingURL=parseDayOrder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseDayOrder.d.ts","sourceRoot":"","sources":["../../../src/parser/parseDayOrder.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AAEpD,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CAwC3B"}
@@ -0,0 +1,71 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseDayOrder = parseDayOrder;
37
+ const cheerio = __importStar(require("cheerio"));
38
+ async function parseDayOrder(response) {
39
+ try {
40
+ const match = response.match(/pageSanitizer\.sanitize\('(.*)'\);/s);
41
+ if (!match || !match[1]) {
42
+ return { error: "Failed to extract dayOrder details", status: 404 };
43
+ }
44
+ const encodedHtml = match[1];
45
+ const decodedHtml = encodedHtml
46
+ .replace(/\\x([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)))
47
+ .replace(/\\\\/g, "")
48
+ .replace(/\\'/g, "'");
49
+ const $ = cheerio.load(decodedHtml);
50
+ let dayOrderText = "";
51
+ let dayOrder = "-";
52
+ $("span.highlight font[color='yellow']").each((_, el) => {
53
+ const text = $(el).text().trim();
54
+ if (text.startsWith("Day Order:")) {
55
+ dayOrderText = text.replace("Day Order:", "").trim();
56
+ }
57
+ });
58
+ for (const order of ["1", "2", "3", "4", "5"]) {
59
+ if (dayOrderText.includes(order)) {
60
+ dayOrder = order;
61
+ break;
62
+ }
63
+ }
64
+ return { dayOrder, status: 200 };
65
+ }
66
+ catch (error) {
67
+ console.error("Error parsing day order:", error);
68
+ return { error: "Failed to parse day order", status: 500 };
69
+ }
70
+ }
71
+ //# sourceMappingURL=parseDayOrder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseDayOrder.js","sourceRoot":"","sources":["../../../src/parser/parseDayOrder.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,sCA0CC;AA7CD,iDAAmC;AAG5B,KAAK,UAAU,aAAa,CACjC,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,oCAAoC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QACtE,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,WAAW,GAAG,WAAW;aAC5B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAS,EAAE,GAAW,EAAE,EAAE,CAC1D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACvC;aACA,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAExB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpC,IAAI,YAAY,GAAG,EAAE,CAAC;QACtB,IAAI,QAAQ,GAAG,GAAG,CAAC;QAEnB,CAAC,CAAC,qCAAqC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,EAAE;YACtD,MAAM,IAAI,GAAG,CAAC,CAAC,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACjC,IAAI,IAAI,CAAC,UAAU,CAAC,YAAY,CAAC,EAAE,CAAC;gBAClC,YAAY,GAAG,IAAI,CAAC,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;YACvD,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,KAAK,MAAM,KAAK,IAAI,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,EAAE,CAAC;YAC9C,IAAI,YAAY,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACjC,QAAQ,GAAG,KAAK,CAAC;gBACjB,MAAM;YACR,CAAC;QACH,CAAC;QAED,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { MarksResponse } from "../type/marks";
2
+ export declare function parseMarks(response: string): Promise<MarksResponse>;
3
+ //# sourceMappingURL=parseMarks.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseMarks.d.ts","sourceRoot":"","sources":["../../../src/parser/parseMarks.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAoB,MAAM,eAAe,CAAC;AAEhE,wBAAsB,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAAC,aAAa,CAAC,CAiEzE"}
@@ -0,0 +1,100 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseMarks = parseMarks;
37
+ const cheerio = __importStar(require("cheerio"));
38
+ async function parseMarks(response) {
39
+ try {
40
+ const match = response.match(/pageSanitizer\.sanitize\('(.*)'\);/s);
41
+ if (!match || !match[1]) {
42
+ console.error("Failed to extract sanitized content from response");
43
+ return { error: "Failed to extract marks data", status: 404 };
44
+ }
45
+ const encodedHtml = match[1];
46
+ const decodedHtml = encodedHtml
47
+ .replace(/\\x([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)))
48
+ .replace(/\\\\/g, "")
49
+ .replace(/\\'/g, "'");
50
+ const $ = cheerio.load(decodedHtml);
51
+ const table = $("table:nth-child(7)");
52
+ const marksDetails = [];
53
+ const tableRows = table.find("tr");
54
+ tableRows.each((i, row) => {
55
+ if (i === 0)
56
+ return;
57
+ const cols = $(row).find("td");
58
+ const course = $(cols[0]).text().trim();
59
+ const category = $(cols[1]).text().trim();
60
+ const marksTable = $(cols[2]).find("table");
61
+ if (course === "" || category === "" || marksTable.length === 0)
62
+ return;
63
+ const marks = [];
64
+ const total = { obtained: 0, maxMark: 0 };
65
+ marksTable.find("td").each((j, markTd) => {
66
+ const strongText = $(markTd).find("strong").text().trim();
67
+ const [type, max] = strongText.split("/");
68
+ const obtained = $(markTd)
69
+ .text()
70
+ .replace(strongText, "")
71
+ .trim()
72
+ .replace(/^\n+|\n+$/g, "");
73
+ if (type && max) {
74
+ marks.push({
75
+ exam: type.trim(),
76
+ obtained: Number(obtained),
77
+ maxMark: Number(max.trim()),
78
+ });
79
+ }
80
+ const obtainedMarks = parseFloat(obtained);
81
+ if (!isNaN(obtainedMarks)) {
82
+ total.obtained += obtainedMarks;
83
+ }
84
+ const maxMarks = parseFloat(max);
85
+ if (!isNaN(maxMarks)) {
86
+ total.maxMark += maxMarks;
87
+ }
88
+ });
89
+ total.obtained = Number(total.obtained.toFixed(2));
90
+ total.maxMark = Number(total.maxMark.toFixed(2));
91
+ marksDetails.push({ course, category, marks, total });
92
+ });
93
+ return { markList: marksDetails, status: 200 };
94
+ }
95
+ catch (error) {
96
+ console.error("Error parsing marks:", error);
97
+ return { error: "Failed to parse marks", status: 500 };
98
+ }
99
+ }
100
+ //# sourceMappingURL=parseMarks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseMarks.js","sourceRoot":"","sources":["../../../src/parser/parseMarks.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,gCAiEC;AApED,iDAAmC;AAG5B,KAAK,UAAU,UAAU,CAAC,QAAgB;IAC/C,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,CAAC,KAAK,CAAC,mDAAmD,CAAC,CAAC;YACnE,OAAO,EAAE,KAAK,EAAE,8BAA8B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAChE,CAAC;QACD,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAC7B,MAAM,WAAW,GAAG,WAAW;aAC5B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAS,EAAE,GAAW,EAAE,EAAE,CAC1D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACvC;aACA,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpC,MAAM,KAAK,GAAG,CAAC,CAAC,oBAAoB,CAAC,CAAC;QACtC,MAAM,YAAY,GAAiB,EAAE,CAAC;QACtC,MAAM,SAAS,GAAG,KAAK,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACnC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,GAAG,EAAE,EAAE;YACxB,IAAI,CAAC,KAAK,CAAC;gBAAE,OAAO;YACpB,MAAM,IAAI,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;YAC/B,MAAM,MAAM,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YACxC,MAAM,QAAQ,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;YAE1C,MAAM,UAAU,GAAG,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;YAC5C,IAAI,MAAM,KAAK,EAAE,IAAI,QAAQ,KAAK,EAAE,IAAI,UAAU,CAAC,MAAM,KAAK,CAAC;gBAAE,OAAO;YACxE,MAAM,KAAK,GAAW,EAAE,CAAC;YACzB,MAAM,KAAK,GAAG,EAAE,QAAQ,EAAE,CAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;YAC1C,UAAU,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE;gBACvC,MAAM,UAAU,GAAG,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;gBAC1D,MAAM,CAAC,IAAI,EAAE,GAAG,CAAC,GAAG,UAAU,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;gBAC1C,MAAM,QAAQ,GAAG,CAAC,CAAC,MAAM,CAAC;qBACvB,IAAI,EAAE;qBACN,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;qBACvB,IAAI,EAAE;qBACN,OAAO,CAAC,YAAY,EAAE,EAAE,CAAC,CAAC;gBAC7B,IAAI,IAAI,IAAI,GAAG,EAAE,CAAC;oBAChB,KAAK,CAAC,IAAI,CAAC;wBACT,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE;wBACjB,QAAQ,EAAE,MAAM,CAAC,QAAQ,CAAC;wBAC1B,OAAO,EAAE,MAAM,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;qBAC5B,CAAC,CAAC;gBACL,CAAC;gBAED,MAAM,aAAa,GAAG,UAAU,CAAC,QAAQ,CAAC,CAAC;gBAC3C,IAAI,CAAC,KAAK,CAAC,aAAa,CAAC,EAAE,CAAC;oBAC1B,KAAK,CAAC,QAAQ,IAAI,aAAa,CAAC;gBAClC,CAAC;gBACD,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC;gBACjC,IAAI,CAAC,KAAK,CAAC,QAAQ,CAAC,EAAE,CAAC;oBACrB,KAAK,CAAC,OAAO,IAAI,QAAQ,CAAC;gBAC5B,CAAC;YACH,CAAC,CAAC,CAAC;YAEH,KAAK,CAAC,QAAQ,GAAG,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACnD,KAAK,CAAC,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;YACjD,YAAY,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,KAAK,EAAE,KAAK,EAAE,CAAC,CAAC;QACxD,CAAC,CAAC,CAAC;QAEH,OAAO,EAAE,QAAQ,EAAE,YAAY,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACjD,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC;QAC7C,OAAO,EAAE,KAAK,EAAE,uBAAuB,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACzD,CAAC;AACH,CAAC"}
@@ -0,0 +1,3 @@
1
+ import { TimetableResponse } from "../type/timetable";
2
+ export declare function parseTimetable(response: string): Promise<TimetableResponse>;
3
+ //# sourceMappingURL=parseTimetable.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTimetable.d.ts","sourceRoot":"","sources":["../../../src/parser/parseTimetable.ts"],"names":[],"mappings":"AAEA,OAAO,EAEL,iBAAiB,EAGlB,MAAM,mBAAmB,CAAC;AAE3B,wBAAsB,cAAc,CAClC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,iBAAiB,CAAC,CA6F5B"}
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseTimetable = parseTimetable;
37
+ const cheerio = __importStar(require("cheerio"));
38
+ const data_1 = require("../../utils/data");
39
+ async function parseTimetable(response) {
40
+ try {
41
+ const match = response.match(/pageSanitizer\.sanitize\('(.*)'\);/s);
42
+ if (!match || !match[1]) {
43
+ return { error: "Failed to extract timetable details", status: 404 };
44
+ }
45
+ const encodedHtml = match[1];
46
+ const decodedHtml = encodedHtml
47
+ .replace(/\\x([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)))
48
+ .replace(/\\\\/g, "")
49
+ .replace(/\\'/g, "'");
50
+ const $ = cheerio.load(decodedHtml);
51
+ const batch = $("td:contains('Batch:')")
52
+ .next("td")
53
+ .find("font")
54
+ .text()
55
+ .trim();
56
+ const courseList = Array.from($(".course_tbl tr").slice(1)).map((row) => {
57
+ const columns = $(row).find("td");
58
+ const get = (idx) => columns[idx] ? $(columns[idx]).text().trim() : "";
59
+ const slotRaw = get(8);
60
+ const sortedSlot = slotRaw
61
+ ? slotRaw
62
+ .split("-")
63
+ .map((s) => s.trim())
64
+ .filter(Boolean)
65
+ : [];
66
+ return {
67
+ courseCode: get(1),
68
+ courseTitle: get(2),
69
+ courseCredit: get(3),
70
+ courseCategory: get(5),
71
+ courseType: get(6),
72
+ courseFaculty: get(7),
73
+ courseSlot: sortedSlot,
74
+ courseRoomNo: get(10).startsWith("AY")
75
+ ? get(9).length === 0
76
+ ? "N/A"
77
+ : get(9)
78
+ : get(10),
79
+ };
80
+ });
81
+ const batchData = data_1.batchSlots[parseInt(batch)];
82
+ const slotMap = {};
83
+ courseList.forEach((course) => {
84
+ course.courseSlot.forEach((slot) => {
85
+ if (slot) {
86
+ slotMap[slot] = {
87
+ courseTitle: course.courseTitle,
88
+ courseCode: course.courseCode,
89
+ courseType: course.courseType,
90
+ courseCategory: course.courseCategory,
91
+ courseRoomNo: course.courseRoomNo,
92
+ };
93
+ }
94
+ });
95
+ });
96
+ const timetable = batchData.slots.map((day) => ({
97
+ dayOrder: day.dayOrder,
98
+ class: day.slots.map((slot, i) => {
99
+ const slotInfo = slotMap[slot]
100
+ ? {
101
+ slot,
102
+ isClass: true,
103
+ courseTitle: slotMap[slot].courseTitle,
104
+ courseCode: slotMap[slot].courseCode,
105
+ courseType: slotMap[slot].courseType,
106
+ courseCategory: slotMap[slot].courseCategory,
107
+ courseRoomNo: slotMap[slot].courseRoomNo,
108
+ }
109
+ : { slot, isClass: false };
110
+ return {
111
+ ...slotInfo,
112
+ time: day.time[i],
113
+ };
114
+ }),
115
+ }));
116
+ return { timetable, status: 200 };
117
+ }
118
+ catch (error) {
119
+ console.error("Error parsing timetable:", error);
120
+ return { error: "Failed to parse timetable", status: 500 };
121
+ }
122
+ }
123
+ //# sourceMappingURL=parseTimetable.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseTimetable.js","sourceRoot":"","sources":["../../../src/parser/parseTimetable.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ import { UserInfoResponse } from "../type/user";
2
+ export declare function parseUserInfo(response: string): Promise<UserInfoResponse>;
3
+ //# sourceMappingURL=parseUserInfo.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseUserInfo.d.ts","sourceRoot":"","sources":["../../../src/parser/parseUserInfo.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,gBAAgB,EAAY,MAAM,cAAc,CAAC;AAE1D,wBAAsB,aAAa,CACjC,QAAQ,EAAE,MAAM,GACf,OAAO,CAAC,gBAAgB,CAAC,CA2C3B"}
@@ -0,0 +1,75 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || (function () {
19
+ var ownKeys = function(o) {
20
+ ownKeys = Object.getOwnPropertyNames || function (o) {
21
+ var ar = [];
22
+ for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
23
+ return ar;
24
+ };
25
+ return ownKeys(o);
26
+ };
27
+ return function (mod) {
28
+ if (mod && mod.__esModule) return mod;
29
+ var result = {};
30
+ if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
31
+ __setModuleDefault(result, mod);
32
+ return result;
33
+ };
34
+ })();
35
+ Object.defineProperty(exports, "__esModule", { value: true });
36
+ exports.parseUserInfo = parseUserInfo;
37
+ const cheerio = __importStar(require("cheerio"));
38
+ async function parseUserInfo(response) {
39
+ try {
40
+ const match = response.match(/pageSanitizer\.sanitize\('(.*)'\);/s);
41
+ if (!match || !match[1]) {
42
+ return { error: "Failed to extract user details", status: 404 };
43
+ }
44
+ const encodedHtml = match[1];
45
+ const decodedHtml = encodedHtml
46
+ .replace(/\\x([0-9A-Fa-f]{2})/g, (_, hex) => String.fromCharCode(parseInt(hex, 16)))
47
+ .replace(/\\\\/g, "")
48
+ .replace(/\\'/g, "'");
49
+ const $ = cheerio.load(decodedHtml);
50
+ const getText = (selector) => $(selector).text().trim();
51
+ const userInfo = {
52
+ regNumber: getText('td:contains("Registration Number:") + td strong'),
53
+ name: getText('td:contains("Name:") + td strong'),
54
+ mobile: getText('td:contains("Mobile:") + td strong'),
55
+ section: getText('td:contains("Department:") + td strong')
56
+ .split("-")[1]
57
+ .replace("(", "")
58
+ .replace(")", "")
59
+ .replace("Section", "")
60
+ .trim(),
61
+ program: getText('td:contains("Program:") + td strong'),
62
+ department: getText('td:contains("Department:") + td strong')
63
+ .split("-")[0]
64
+ .trim(),
65
+ semester: getText('td:contains("Semester:") + td strong'),
66
+ batch: getText('td:contains("Batch:") + td strong font'),
67
+ };
68
+ return { userInfo, status: 200 };
69
+ }
70
+ catch (error) {
71
+ console.error("Error parsing user info:", error);
72
+ return { error: "Failed to parse user info", status: 500 };
73
+ }
74
+ }
75
+ //# sourceMappingURL=parseUserInfo.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parseUserInfo.js","sourceRoot":"","sources":["../../../src/parser/parseUserInfo.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAGA,sCA6CC;AAhDD,iDAAmC;AAG5B,KAAK,UAAU,aAAa,CACjC,QAAgB;IAEhB,IAAI,CAAC;QACH,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,qCAAqC,CAAC,CAAC;QACpE,IAAI,CAAC,KAAK,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YACxB,OAAO,EAAE,KAAK,EAAE,gCAAgC,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;QAClE,CAAC;QAED,MAAM,WAAW,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QAE7B,MAAM,WAAW,GAAG,WAAW;aAC5B,OAAO,CAAC,sBAAsB,EAAE,CAAC,CAAS,EAAE,GAAW,EAAE,EAAE,CAC1D,MAAM,CAAC,YAAY,CAAC,QAAQ,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CACvC;aACA,OAAO,CAAC,OAAO,EAAE,EAAE,CAAC;aACpB,OAAO,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAExB,MAAM,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAEpC,MAAM,OAAO,GAAG,CAAC,QAAgB,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,IAAI,EAAE,CAAC;QAChE,MAAM,QAAQ,GAAa;YACzB,SAAS,EAAE,OAAO,CAAC,iDAAiD,CAAC;YACrE,IAAI,EAAE,OAAO,CAAC,kCAAkC,CAAC;YACjD,MAAM,EAAE,OAAO,CAAC,oCAAoC,CAAC;YACrD,OAAO,EAAE,OAAO,CAAC,wCAAwC,CAAC;iBACvD,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACb,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;iBAChB,OAAO,CAAC,GAAG,EAAE,EAAE,CAAC;iBAChB,OAAO,CAAC,SAAS,EAAE,EAAE,CAAC;iBACtB,IAAI,EAAE;YACT,OAAO,EAAE,OAAO,CAAC,qCAAqC,CAAC;YACvD,UAAU,EAAE,OAAO,CAAC,wCAAwC,CAAC;iBAC1D,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;iBACb,IAAI,EAAE;YAET,QAAQ,EAAE,OAAO,CAAC,sCAAsC,CAAC;YACzD,KAAK,EAAE,OAAO,CAAC,wCAAwC,CAAC;SACzD,CAAC;QAEF,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IACnC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO,CAAC,KAAK,CAAC,0BAA0B,EAAE,KAAK,CAAC,CAAC;QACjD,OAAO,EAAE,KAAK,EAAE,2BAA2B,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC;IAC7D,CAAC;AACH,CAAC"}
@@ -0,0 +1,21 @@
1
+ export interface AttendanceDetail {
2
+ courseCode: string;
3
+ courseTitle: string;
4
+ courseCategory: string;
5
+ courseFaculty: string;
6
+ courseSlot: string;
7
+ courseConducted: number;
8
+ courseAbsent: number;
9
+ courseAttendance: string;
10
+ courseAttendanceStatus: AttendanceStatusType;
11
+ }
12
+ export interface AttendanceResponse {
13
+ attendance?: AttendanceDetail[];
14
+ error?: string;
15
+ status: number;
16
+ }
17
+ export interface AttendanceStatusType {
18
+ status: "required" | "margin";
19
+ classes: number;
20
+ }
21
+ //# sourceMappingURL=attendance.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attendance.d.ts","sourceRoot":"","sources":["../../../src/type/attendance.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,gBAAgB;IAC/B,UAAU,EAAE,MAAM,CAAC;IACnB,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,CAAC;IACvB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;IACrB,gBAAgB,EAAE,MAAM,CAAC;IACzB,sBAAsB,EAAE,oBAAoB,CAAC;CAC9C;AAED,MAAM,WAAW,kBAAkB;IACjC,UAAU,CAAC,EAAE,gBAAgB,EAAE,CAAC;IAChC,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,oBAAoB;IACnC,MAAM,EAAE,UAAU,GAAG,QAAQ,CAAC;IAC9B,OAAO,EAAE,MAAM,CAAC;CACjB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=attendance.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"attendance.js","sourceRoot":"","sources":["../../../src/type/attendance.ts"],"names":[],"mappings":""}
@@ -0,0 +1,48 @@
1
+ export interface PasswordInput {
2
+ identifier: string;
3
+ digest: string;
4
+ password: string;
5
+ }
6
+ export interface UserRequest {
7
+ lookup?: {
8
+ identifier: string;
9
+ digest: string;
10
+ };
11
+ status_code: number;
12
+ message: string;
13
+ }
14
+ export interface UserResponse {
15
+ identifier?: string;
16
+ digest?: string;
17
+ status_code: number;
18
+ message: string;
19
+ }
20
+ export interface PasswordResponse {
21
+ status_code: number;
22
+ localized_message?: string;
23
+ cdigest?: string;
24
+ }
25
+ export interface AuthResult {
26
+ data?: {
27
+ cookies?: string;
28
+ statusCode: number;
29
+ message?: string;
30
+ captcha?: {
31
+ required: boolean;
32
+ digest: string | null | undefined;
33
+ };
34
+ };
35
+ isAuthenticated?: boolean;
36
+ error?: string;
37
+ errorReason?: unknown;
38
+ }
39
+ export interface UserValidationResult {
40
+ data?: UserResponse;
41
+ error?: string;
42
+ errorReason?: unknown;
43
+ }
44
+ export interface LogoutResponse {
45
+ message: string;
46
+ status: number;
47
+ }
48
+ //# sourceMappingURL=auth.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../src/type/auth.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,aAAa;IAC5B,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,WAAW;IAC1B,MAAM,CAAC,EAAE;QACP,UAAU,EAAE,MAAM,CAAC;QACnB,MAAM,EAAE,MAAM,CAAC;KAChB,CAAC;IACF,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,YAAY;IAC3B,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,WAAW,EAAE,MAAM,CAAC;IACpB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,UAAU;IACzB,IAAI,CAAC,EAAE;QACL,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,CAAC,EAAE,MAAM,CAAC;QACjB,OAAO,CAAC,EAAE;YACR,QAAQ,EAAE,OAAO,CAAC;YAClB,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;SACnC,CAAC;KACH,CAAC;IACF,eAAe,CAAC,EAAE,OAAO,CAAC;IAC1B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,oBAAoB;IACnC,IAAI,CAAC,EAAE,YAAY,CAAC;IACpB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAGD,MAAM,WAAW,cAAc;IAC7B,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,MAAM,CAAC;CAChB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=auth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../src/type/auth.ts"],"names":[],"mappings":""}
@@ -0,0 +1,16 @@
1
+ export interface Day {
2
+ date: string;
3
+ day: string;
4
+ event: string;
5
+ dayOrder: string;
6
+ }
7
+ export interface Month {
8
+ month: string;
9
+ days: Day[];
10
+ }
11
+ export interface CalendarResponse {
12
+ calendar?: Month[];
13
+ error?: string;
14
+ status: number;
15
+ }
16
+ //# sourceMappingURL=calendar.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"calendar.d.ts","sourceRoot":"","sources":["../../../src/type/calendar.ts"],"names":[],"mappings":"AACA,MAAM,WAAW,GAAG;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,KAAK;IACpB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,GAAG,EAAE,CAAC;CACb;AAED,MAAM,WAAW,gBAAgB;IAC/B,QAAQ,CAAC,EAAE,KAAK,EAAE,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB"}