juno-erp-client 1.0.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/LICENSE +19 -0
- package/README.md +99 -0
- package/dist/index.d.ts +198 -0
- package/dist/index.js +642 -0
- package/dist/types/index.d.ts +463 -0
- package/dist/types/index.js +2 -0
- package/package.json +48 -0
|
@@ -0,0 +1,463 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Configuration options for the Juno API client.
|
|
3
|
+
*/
|
|
4
|
+
export interface JunoConfig {
|
|
5
|
+
/** The base URL of the Juno ERP system. Defaults to 'https://erp.mgmu.ac.in' */
|
|
6
|
+
baseUrl?: string;
|
|
7
|
+
/** Enable detailed debug logging to the console. */
|
|
8
|
+
debug?: boolean;
|
|
9
|
+
/** Optional path to a JSON file for persisting session cookies across executions. */
|
|
10
|
+
sessionPath?: string;
|
|
11
|
+
/** Whether to automatically save the session to the sessionPath after login. Defaults to true if sessionPath is provided. */
|
|
12
|
+
autoSave?: boolean;
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Detailed student profile information.
|
|
16
|
+
*/
|
|
17
|
+
export interface StudentProfile {
|
|
18
|
+
studentId: string;
|
|
19
|
+
firstName: string;
|
|
20
|
+
middleName: string;
|
|
21
|
+
lastName: string;
|
|
22
|
+
/** Primary mobile number */
|
|
23
|
+
mobileNo: string;
|
|
24
|
+
/** Primary email address */
|
|
25
|
+
personalEmailId: string;
|
|
26
|
+
/** Alternative email address */
|
|
27
|
+
alternetEmailID: string;
|
|
28
|
+
/** Date of birth (format typically Mar 25, 2025) */
|
|
29
|
+
dob: string;
|
|
30
|
+
gender: string;
|
|
31
|
+
categoryId: string;
|
|
32
|
+
categoryName: string;
|
|
33
|
+
/** Date of admission */
|
|
34
|
+
admissionDate: string;
|
|
35
|
+
bloodGroup: string;
|
|
36
|
+
motherName: string;
|
|
37
|
+
fatherName: string;
|
|
38
|
+
/** University Permanent Registration Number */
|
|
39
|
+
uniPRNNo: string;
|
|
40
|
+
/** Institute roll number */
|
|
41
|
+
rollNo: string;
|
|
42
|
+
programType: string;
|
|
43
|
+
degreeType: string;
|
|
44
|
+
religionId: string;
|
|
45
|
+
nationalityId: string;
|
|
46
|
+
nation: string;
|
|
47
|
+
stateId: string;
|
|
48
|
+
state: string;
|
|
49
|
+
hostelite: string;
|
|
50
|
+
studMaritalStatus: string;
|
|
51
|
+
motherTongue: string;
|
|
52
|
+
otherKnownLanguages: string;
|
|
53
|
+
Gender: string;
|
|
54
|
+
Caste: string;
|
|
55
|
+
adharcardNo: string;
|
|
56
|
+
admissionTypeName: string;
|
|
57
|
+
/** Whether the profile is currently active */
|
|
58
|
+
profileStatus: boolean;
|
|
59
|
+
/** Whether the profile is locked for editing */
|
|
60
|
+
isProfileFreezed: string;
|
|
61
|
+
/** Whether a profile image exists */
|
|
62
|
+
studentProfileImage: boolean;
|
|
63
|
+
/** Whether a profile signature exists */
|
|
64
|
+
studentProfileSignature: boolean;
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Basic personal contact and address information.
|
|
68
|
+
*/
|
|
69
|
+
export interface PersonalInfo {
|
|
70
|
+
uniqueNumber: string;
|
|
71
|
+
personalMailId: string;
|
|
72
|
+
alternateContactNo: string;
|
|
73
|
+
fullName: string;
|
|
74
|
+
studentId: number;
|
|
75
|
+
fatherName: string;
|
|
76
|
+
motherName: string;
|
|
77
|
+
/** Current residential address line 1 */
|
|
78
|
+
currAddressLine1: string;
|
|
79
|
+
currAddressLine2: string;
|
|
80
|
+
currCity: string;
|
|
81
|
+
currDistrict: string;
|
|
82
|
+
currState: string;
|
|
83
|
+
currCountry: string;
|
|
84
|
+
currPin: string;
|
|
85
|
+
/** Permanent address line 1 */
|
|
86
|
+
permAddressLine1: string;
|
|
87
|
+
permAddressLine2: string;
|
|
88
|
+
permCity: string;
|
|
89
|
+
permState: string;
|
|
90
|
+
permCountry: string;
|
|
91
|
+
permPin: string;
|
|
92
|
+
/** Current academic status (e.g., PURSUING) */
|
|
93
|
+
currStatus: string;
|
|
94
|
+
mobile: string;
|
|
95
|
+
dob: string;
|
|
96
|
+
userName: string;
|
|
97
|
+
emailId: string;
|
|
98
|
+
bloodGroup: string;
|
|
99
|
+
pcNumber: string;
|
|
100
|
+
prnNumber: string;
|
|
101
|
+
fatherMobNo: string;
|
|
102
|
+
motherMobNo: string;
|
|
103
|
+
caste: string;
|
|
104
|
+
category: string;
|
|
105
|
+
gender: string;
|
|
106
|
+
joiningDate: string;
|
|
107
|
+
admissionDate: string;
|
|
108
|
+
NADId: string;
|
|
109
|
+
abcAccountId: string;
|
|
110
|
+
aadharNo: string;
|
|
111
|
+
antiRaggingNo: string;
|
|
112
|
+
}
|
|
113
|
+
/**
|
|
114
|
+
* Academic enrollment information including course and semester details.
|
|
115
|
+
*/
|
|
116
|
+
export interface AcademicInfo {
|
|
117
|
+
studentId: number;
|
|
118
|
+
/** Detailed name of the enrolled course */
|
|
119
|
+
courseName: string;
|
|
120
|
+
/** Type of course (e.g., COURSE_TYPE_UG) */
|
|
121
|
+
courseType: string;
|
|
122
|
+
/** Course name including the department */
|
|
123
|
+
courseWithDepartmentName: string;
|
|
124
|
+
rollNo: string;
|
|
125
|
+
/** Academic year level (e.g., Second Year) */
|
|
126
|
+
divisionName: string;
|
|
127
|
+
/** The batch range (e.g., 2024 - 2028) */
|
|
128
|
+
academicBatch: string;
|
|
129
|
+
/** Standard name of the current semester (e.g., SEM IV) */
|
|
130
|
+
semesterName: string;
|
|
131
|
+
PRNnumber: string;
|
|
132
|
+
instituteCourseId: number;
|
|
133
|
+
/** Internal identifier for the semester context */
|
|
134
|
+
semester_ICS: string;
|
|
135
|
+
isEngineeringStream: boolean;
|
|
136
|
+
isMentorAllocated: boolean;
|
|
137
|
+
classCordinators: any[];
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Information regarding the student's admission status and documentation.
|
|
141
|
+
*/
|
|
142
|
+
export interface AdmissionDetail {
|
|
143
|
+
entranceExamName: string;
|
|
144
|
+
admissionType: string;
|
|
145
|
+
admissionCategoryName: string;
|
|
146
|
+
courseType: string;
|
|
147
|
+
documentSubmissionDate: string;
|
|
148
|
+
applicationNo: string;
|
|
149
|
+
antiRaggingNo: string;
|
|
150
|
+
studentUniqueNumber: string;
|
|
151
|
+
hasDocumentSubmitted: boolean;
|
|
152
|
+
totalDocumentToBeSubmitted: number;
|
|
153
|
+
totalDocumentSubmitted: number;
|
|
154
|
+
remainingDocumentSubmitted: number;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Details of a specific course/subject and the student's attendance in it.
|
|
158
|
+
*/
|
|
159
|
+
export interface Course {
|
|
160
|
+
/** Subject name (e.g., Operating System) */
|
|
161
|
+
subject: string;
|
|
162
|
+
subjectId: number;
|
|
163
|
+
subjectCode: string;
|
|
164
|
+
termName: string;
|
|
165
|
+
termId: number;
|
|
166
|
+
facultName: string;
|
|
167
|
+
/** String representation of present lectures */
|
|
168
|
+
presentCount: string;
|
|
169
|
+
/** String representation of absent lectures */
|
|
170
|
+
absentCount: string;
|
|
171
|
+
credits: string;
|
|
172
|
+
session: string;
|
|
173
|
+
academicBatch: string;
|
|
174
|
+
/** Numeric count of present lectures */
|
|
175
|
+
stdAttPresentCount: number;
|
|
176
|
+
/** Numeric count of absent lectures */
|
|
177
|
+
stdAttAbsentCount: number;
|
|
178
|
+
/** Numeric count of leave sessions */
|
|
179
|
+
stdAttLeaveCount: number;
|
|
180
|
+
/** Raw delimited string of attendance history */
|
|
181
|
+
studentAttendanceData: string;
|
|
182
|
+
SubjectwiseStudentId: number;
|
|
183
|
+
subBatchId: number;
|
|
184
|
+
subjectCategory: string;
|
|
185
|
+
courseType: string;
|
|
186
|
+
medicalLeave: string;
|
|
187
|
+
specialLeave: string;
|
|
188
|
+
instituteLevelLeave: string;
|
|
189
|
+
totalLeave: string;
|
|
190
|
+
nextLectDate: string;
|
|
191
|
+
nextLectTime: string;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Wrapper for overall attendance statistics.
|
|
195
|
+
*/
|
|
196
|
+
export interface AttendanceDetails {
|
|
197
|
+
hasAttendanceDetails: boolean;
|
|
198
|
+
isSchool: boolean;
|
|
199
|
+
AttendaceDetailsJObject: {
|
|
200
|
+
/** Cumulative lectures in the current semester */
|
|
201
|
+
totalLectures: string;
|
|
202
|
+
/** Cumulative attended lectures */
|
|
203
|
+
totalAttendedLectures: string;
|
|
204
|
+
/** Attendance percentage as a string */
|
|
205
|
+
percent: string;
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
/**
|
|
209
|
+
* Data point for attendance graphing.
|
|
210
|
+
*/
|
|
211
|
+
export interface AttendanceGraph {
|
|
212
|
+
name: string;
|
|
213
|
+
drilldown: string;
|
|
214
|
+
color: string;
|
|
215
|
+
y: number;
|
|
216
|
+
}
|
|
217
|
+
/**
|
|
218
|
+
* Detailed examination result for a specific subject.
|
|
219
|
+
*/
|
|
220
|
+
export interface ResultDetail {
|
|
221
|
+
studentName: string;
|
|
222
|
+
seatNo: string;
|
|
223
|
+
motherName: string;
|
|
224
|
+
FatherName: string;
|
|
225
|
+
subjectCode: string;
|
|
226
|
+
subjectName: string;
|
|
227
|
+
InternalMarks: string;
|
|
228
|
+
ExternalMarks: string;
|
|
229
|
+
internalExternalTotal: string;
|
|
230
|
+
Grade: string;
|
|
231
|
+
Pointer: string;
|
|
232
|
+
creditPoint: string;
|
|
233
|
+
earnedCredit: string;
|
|
234
|
+
int: string;
|
|
235
|
+
ext: string;
|
|
236
|
+
sgpaCreditPointTotal: string;
|
|
237
|
+
sgpaEarnedPointsTotal: string;
|
|
238
|
+
sgpaObtainedMarks: string;
|
|
239
|
+
cgTotal: string;
|
|
240
|
+
sgpa: string;
|
|
241
|
+
percentage: string;
|
|
242
|
+
status: string;
|
|
243
|
+
outOff: string;
|
|
244
|
+
cgpaCGTotal: string;
|
|
245
|
+
cgpaCreditPointTotal: string;
|
|
246
|
+
cgpaEarnPointTotal: string;
|
|
247
|
+
cgpa: string;
|
|
248
|
+
cg: string;
|
|
249
|
+
programName: string;
|
|
250
|
+
resultBlockStatus: string;
|
|
251
|
+
resultBlockReason: string;
|
|
252
|
+
ordinance: string;
|
|
253
|
+
intPassing: string;
|
|
254
|
+
extPassing: string;
|
|
255
|
+
resultStatus: string;
|
|
256
|
+
UniversityId: number;
|
|
257
|
+
FailStatus: string;
|
|
258
|
+
}
|
|
259
|
+
/**
|
|
260
|
+
* Summary of exam performance and academic marks.
|
|
261
|
+
*/
|
|
262
|
+
export interface ExamDetails {
|
|
263
|
+
hasExamMarksDetails: boolean;
|
|
264
|
+
hasExamApprovalDetails: boolean;
|
|
265
|
+
ExamDetailsJObject: {
|
|
266
|
+
lastAttemptedSemester: string;
|
|
267
|
+
totalInternalMarks: number;
|
|
268
|
+
totalExternalMarks: number;
|
|
269
|
+
subjectTotalMarks: number;
|
|
270
|
+
totalMarksObtained: number;
|
|
271
|
+
totalAttemptedSubject: number;
|
|
272
|
+
percent: number;
|
|
273
|
+
};
|
|
274
|
+
/** Student contextual information for the exam scope */
|
|
275
|
+
type: {
|
|
276
|
+
type: string;
|
|
277
|
+
instCourseStrngthId: number;
|
|
278
|
+
instCourseId: number;
|
|
279
|
+
name: string;
|
|
280
|
+
studentId: number;
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
/**
|
|
284
|
+
* Current fee structure and invoicing status.
|
|
285
|
+
*/
|
|
286
|
+
export interface FeesDetails {
|
|
287
|
+
currentFeeStructureExist: boolean;
|
|
288
|
+
ApplicableFeeStructureAndInvoice: {
|
|
289
|
+
feeStructureId: number;
|
|
290
|
+
feeStructureName: string;
|
|
291
|
+
/** Total fees formatted as string with currency */
|
|
292
|
+
totalFees: string;
|
|
293
|
+
studentFeeInvoiceId: number;
|
|
294
|
+
/** Total amount payable by the student */
|
|
295
|
+
totalPayableAmount: string;
|
|
296
|
+
invoiceNo: string;
|
|
297
|
+
/** Total amount paid to date */
|
|
298
|
+
totalPaidAmount: string;
|
|
299
|
+
/** Remaining balance outstanding */
|
|
300
|
+
remainingPayableAmount: number;
|
|
301
|
+
remainingPayableToStudentAmount: string;
|
|
302
|
+
isSponsored: boolean;
|
|
303
|
+
currentInvoiceGenerated: boolean;
|
|
304
|
+
};
|
|
305
|
+
}
|
|
306
|
+
/**
|
|
307
|
+
* Breakdown of a specific fee structure.
|
|
308
|
+
*/
|
|
309
|
+
export interface FeeStructure {
|
|
310
|
+
feeItemId: number;
|
|
311
|
+
instituteCourseStrengthId: number;
|
|
312
|
+
freezeStatus: boolean;
|
|
313
|
+
concessionAmount: number;
|
|
314
|
+
concessionAmt: number;
|
|
315
|
+
govermentLablity: number;
|
|
316
|
+
revisionNo: number;
|
|
317
|
+
instituteCourseId: number;
|
|
318
|
+
StudentPayable: number;
|
|
319
|
+
StudentPaid: number;
|
|
320
|
+
sponsorshiprecevable: number;
|
|
321
|
+
sponsorshipreceived: number;
|
|
322
|
+
year: string;
|
|
323
|
+
Admissiontype: string;
|
|
324
|
+
category: string;
|
|
325
|
+
feestructurename: string;
|
|
326
|
+
studentFeeInvoiceId: string | number;
|
|
327
|
+
rollNo: string;
|
|
328
|
+
currencyCode?: string;
|
|
329
|
+
currencyId?: number;
|
|
330
|
+
currentFeeStructre?: boolean;
|
|
331
|
+
}
|
|
332
|
+
/**
|
|
333
|
+
* Summary of total financial receivables from a student.
|
|
334
|
+
*/
|
|
335
|
+
export interface StudentReceivable {
|
|
336
|
+
academicFees: number;
|
|
337
|
+
hostelFees: number;
|
|
338
|
+
miscFee: number;
|
|
339
|
+
studentPayable: string;
|
|
340
|
+
studentPaidTill: number;
|
|
341
|
+
totalAmount: number;
|
|
342
|
+
sponsorshingRecev: number;
|
|
343
|
+
offlinePayment: string;
|
|
344
|
+
}
|
|
345
|
+
/**
|
|
346
|
+
* A single entry in the student's timetable.
|
|
347
|
+
*/
|
|
348
|
+
export interface TimetableEntry {
|
|
349
|
+
instituteCourseBatchSemesterConductedTimeTableId?: string;
|
|
350
|
+
subjectWisebatchId?: string;
|
|
351
|
+
subjectId?: string;
|
|
352
|
+
/** Short abbreviated subject name */
|
|
353
|
+
subShortName?: string;
|
|
354
|
+
/** Subject name */
|
|
355
|
+
sub?: string;
|
|
356
|
+
/** Start time in HH:mm:ss */
|
|
357
|
+
startTimeHM: string;
|
|
358
|
+
/** End time in HH:mm:ss */
|
|
359
|
+
endTimeHM: string;
|
|
360
|
+
recess?: string;
|
|
361
|
+
infraType?: string;
|
|
362
|
+
/** Faculty description or initials */
|
|
363
|
+
lecDesc?: string;
|
|
364
|
+
infraName?: string;
|
|
365
|
+
/** Start time in 12-hour format (e.g., 10:00 AM) */
|
|
366
|
+
startTimeHHMMA: string;
|
|
367
|
+
/** End time in 12-hour format (e.g., 11:00 AM) */
|
|
368
|
+
endTimeHHMMA: string;
|
|
369
|
+
documents?: any[];
|
|
370
|
+
documentUpl?: any[];
|
|
371
|
+
}
|
|
372
|
+
/**
|
|
373
|
+
* Represents the schedule for a specific day.
|
|
374
|
+
*/
|
|
375
|
+
export interface TodaySchedule {
|
|
376
|
+
timetable: TimetableEntry[];
|
|
377
|
+
}
|
|
378
|
+
/**
|
|
379
|
+
* More detailed timetable information when searching between specific dates.
|
|
380
|
+
*/
|
|
381
|
+
export interface DetailedTimetableEntry {
|
|
382
|
+
lectureDate: string;
|
|
383
|
+
lectureDay: string;
|
|
384
|
+
lectureStartTime: string;
|
|
385
|
+
lectureEndTime: string;
|
|
386
|
+
sessoionNo: string;
|
|
387
|
+
subjectName: string;
|
|
388
|
+
chapterName: string;
|
|
389
|
+
/** Classroom name or number */
|
|
390
|
+
classRoom: string;
|
|
391
|
+
facultyName: string;
|
|
392
|
+
lectureDateWithoutFormat: string;
|
|
393
|
+
guestLecDescription: string;
|
|
394
|
+
teachingAids: string;
|
|
395
|
+
documents: any[];
|
|
396
|
+
documentUpl: any[];
|
|
397
|
+
employeeSubjectAllocationId: string;
|
|
398
|
+
subjectWisebatchId: string;
|
|
399
|
+
isGooleMeet: boolean;
|
|
400
|
+
isMicrosoftTeams: boolean;
|
|
401
|
+
isZoomMeet: boolean;
|
|
402
|
+
isWebConferenceAvailable: boolean;
|
|
403
|
+
eventWebId: string;
|
|
404
|
+
link: string;
|
|
405
|
+
sharedLink: string;
|
|
406
|
+
}
|
|
407
|
+
/**
|
|
408
|
+
* A single result from a global platform search.
|
|
409
|
+
*/
|
|
410
|
+
export interface SearchResult {
|
|
411
|
+
/** Unique ID prefixed with result type (e.g., Individual-12345) */
|
|
412
|
+
id: string;
|
|
413
|
+
/** Full name and batch info */
|
|
414
|
+
name: string;
|
|
415
|
+
/** Detailed description containing course, semester, and roll number */
|
|
416
|
+
Desc: string;
|
|
417
|
+
/** Relative URL to the profile image */
|
|
418
|
+
imageUrl: string;
|
|
419
|
+
/** Primary contact number if available */
|
|
420
|
+
contactNo: string;
|
|
421
|
+
GroupName: string;
|
|
422
|
+
employeeId?: string;
|
|
423
|
+
/** Type of result (e.g., Student, Faculty) */
|
|
424
|
+
resultType?: string;
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Caste information for student categorization.
|
|
428
|
+
*/
|
|
429
|
+
export interface Caste {
|
|
430
|
+
casteId: string;
|
|
431
|
+
casteName: string;
|
|
432
|
+
}
|
|
433
|
+
/**
|
|
434
|
+
* Country information for nationality selection.
|
|
435
|
+
*/
|
|
436
|
+
export interface Country {
|
|
437
|
+
countryId: number;
|
|
438
|
+
country: string;
|
|
439
|
+
}
|
|
440
|
+
/**
|
|
441
|
+
* Individual entry for a student's division or course transfer request.
|
|
442
|
+
*/
|
|
443
|
+
export interface TransferDetail {
|
|
444
|
+
transferType: string;
|
|
445
|
+
fromDivision: string;
|
|
446
|
+
toDivision: string;
|
|
447
|
+
semester: string;
|
|
448
|
+
division: string;
|
|
449
|
+
studentTransferDetailId: number;
|
|
450
|
+
approved1: boolean;
|
|
451
|
+
requestedDate: string;
|
|
452
|
+
}
|
|
453
|
+
/**
|
|
454
|
+
* Historical record of a student's transfer.
|
|
455
|
+
*/
|
|
456
|
+
export interface TransferDetailsOfStudent {
|
|
457
|
+
approvedDate: string;
|
|
458
|
+
approvedBy: string;
|
|
459
|
+
from: string;
|
|
460
|
+
to: string;
|
|
461
|
+
transferType: string;
|
|
462
|
+
transferDate: string;
|
|
463
|
+
}
|
package/package.json
ADDED
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
{
|
|
2
|
+
"name": "juno-erp-client",
|
|
3
|
+
"version": "1.0.0",
|
|
4
|
+
"description": "A high-level TypeScript API wrapper for the JUNO Campus ERP platform, supporting automated login and session persistence.",
|
|
5
|
+
"main": "dist/index.js",
|
|
6
|
+
"types": "dist/index.d.ts",
|
|
7
|
+
"files": [
|
|
8
|
+
"dist",
|
|
9
|
+
"README.md",
|
|
10
|
+
"LICENSE"
|
|
11
|
+
],
|
|
12
|
+
"scripts": {
|
|
13
|
+
"build": "tsc",
|
|
14
|
+
"prepublishOnly": "npm run build",
|
|
15
|
+
"dev": "ts-node src/index.ts",
|
|
16
|
+
"test": "echo \"Error: no test specified\" && exit 1"
|
|
17
|
+
},
|
|
18
|
+
"keywords": [
|
|
19
|
+
"juno",
|
|
20
|
+
"juno-campus",
|
|
21
|
+
"erp",
|
|
22
|
+
"mgm",
|
|
23
|
+
"api-wrapper",
|
|
24
|
+
"student-portal",
|
|
25
|
+
"automation"
|
|
26
|
+
],
|
|
27
|
+
"author": "Denizuh <danishs2007@gmail.com>",
|
|
28
|
+
"license": "MIT",
|
|
29
|
+
"repository": {
|
|
30
|
+
"type": "git",
|
|
31
|
+
"url": "git+https://github.com/danish-mar/juno.js.git"
|
|
32
|
+
},
|
|
33
|
+
"bugs": {
|
|
34
|
+
"url": "https://github.com/danish-mar/juno.js/issues"
|
|
35
|
+
},
|
|
36
|
+
"homepage": "https://github.com/danish-mar/juno.js#readme",
|
|
37
|
+
"devDependencies": {
|
|
38
|
+
"@types/node": "^25.0.9",
|
|
39
|
+
"@types/tough-cookie": "^4.0.5",
|
|
40
|
+
"ts-node": "^10.9.2",
|
|
41
|
+
"typescript": "^5.9.3"
|
|
42
|
+
},
|
|
43
|
+
"dependencies": {
|
|
44
|
+
"axios": "^1.13.2",
|
|
45
|
+
"axios-cookiejar-support": "^6.0.5",
|
|
46
|
+
"tough-cookie": "^6.0.0"
|
|
47
|
+
}
|
|
48
|
+
}
|