From 289a433d11208130a84f5db10256bea4dbbe3621 Mon Sep 17 00:00:00 2001 From: CarlosNunezMX Date: Wed, 5 Jun 2024 20:35:15 -0600 Subject: [PATCH] Added cache for some methods --- docs/typedoc/assets/search.js | 2 +- docs/typedoc/classes/AverageAdvance.html | 14 +++--- docs/typedoc/classes/Credits.html | 14 +++--- docs/typedoc/classes/EliminarMateria.html | 15 ++++--- docs/typedoc/classes/Kardex.html | 14 +++--- docs/typedoc/classes/Login.html | 14 +++--- docs/typedoc/classes/Method.AuthMethod.html | 14 +++--- docs/typedoc/classes/Method.Method.html | 6 +-- docs/typedoc/classes/Projections.html | 13 +++--- docs/typedoc/classes/RegistrarMateria.html | 15 ++++--- docs/typedoc/classes/RequestError.html | 6 +-- docs/typedoc/classes/Schedule.html | 14 +++--- docs/typedoc/classes/StudentCard.html | 10 +++-- docs/typedoc/classes/StudentInfo.html | 12 ++++-- docs/typedoc/classes/StudentPlans.html | 12 ++++-- .../functions/ErrorTypes.ErrorHandling.html | 2 +- docs/typedoc/modules/ErrorTypes.html | 2 +- docs/typedoc/modules/KardexTypes.html | 2 +- docs/typedoc/modules/Method.html | 2 +- .../typedoc/modules/RegistroMateriaTypes.html | 2 +- docs/typedoc/types/AvAdvanceType.html | 2 +- docs/typedoc/types/AvanceItem.html | 2 +- docs/typedoc/types/AverageAdvanceInit.html | 2 +- docs/typedoc/types/Card.html | 2 +- docs/typedoc/types/CreditsInit.html | 2 +- docs/typedoc/types/Dias.html | 2 +- docs/typedoc/types/DomicilioFormated.html | 2 +- .../types/ErrorTypes.UnsupportedType.html | 2 +- docs/typedoc/types/Horario.html | 2 +- docs/typedoc/types/Horas.html | 2 +- .../types/KardexTypes.CredTaesItem.html | 2 +- .../typedoc/types/KardexTypes.KardexType.html | 2 +- ...rdexTypes.historiaAcademicaKardexItem.html | 2 +- .../types/KardexTypes.planesEstudios.html | 2 +- .../KardexTypes.resumenCreditosItem.html | 2 +- docs/typedoc/types/Materia.html | 2 +- docs/typedoc/types/MethodNotAllowedType.html | 2 +- docs/typedoc/types/Plans.html | 2 +- docs/typedoc/types/Profesor.html | 2 +- docs/typedoc/types/ProjectionSubjectType.html | 2 +- ...egistroMateriaTypes.MateriaRegistrada.html | 2 +- ...stroMateriaTypes.RegistrarMateriaInit.html | 2 +- docs/typedoc/types/ScheduleInit.html | 2 +- docs/typedoc/types/SoyUdgError.html | 2 +- docs/typedoc/types/StudentInfoType.html | 2 +- docs/typedoc/types/UnauthorizedType.html | 2 +- docs/typedoc/types/UserCredentials.html | 2 +- source/auth/Cache.ts | 4 -- source/auth/Login.ts | 15 ++++++- source/info/Plans.ts | 6 +++ source/student/AverageAdvance/AvAdvance.ts | 8 +++- source/student/Boletas/BoletaInfo.d.ts | 12 ++++++ source/student/Boletas/Boletas.ts | 43 +++++++++++++++++++ source/student/Card/StudentCard.ts | 13 ++++-- source/student/Credits/Credits.ts | 8 +++- source/student/Projections/Projections.ts | 14 +++--- .../RegistroMaterias/EliminarMateria.ts | 25 ++++++----- .../RegistroMaterias/RegistrarMateria.ts | 26 +++++------ source/student/Schedules/Schedule.ts | 11 ++++- source/student/StudentInfo/StudentInfo.ts | 5 +++ source/utils/Method.ts | 16 +++++-- source/utils/useCache.ts | 2 + test/common.ts | 2 +- test/playground.ts | 16 ++++--- types/auth/Cache.d.ts | 8 ++++ types/auth/Login.d.ts | 4 ++ types/student/Boletas/Boletas.d.ts | 12 ++++++ types/student/Projections/Projections.d.ts | 3 +- .../RegistroMaterias/EliminarMateria.d.ts | 3 +- .../RegistroMaterias/RegistrarMateria.d.ts | 3 +- types/utils/Method.d.ts | 8 +++- types/utils/crypto/WebBcrypt.d.ts | 1 + types/utils/useCache.d.ts | 1 + 73 files changed, 345 insertions(+), 163 deletions(-) create mode 100644 source/student/Boletas/BoletaInfo.d.ts create mode 100644 source/student/Boletas/Boletas.ts create mode 100644 source/utils/useCache.ts create mode 100644 types/auth/Cache.d.ts create mode 100644 types/student/Boletas/Boletas.d.ts create mode 100644 types/utils/crypto/WebBcrypt.d.ts create mode 100644 types/utils/useCache.d.ts diff --git a/docs/typedoc/assets/search.js b/docs/typedoc/assets/search.js index da72bdb..2564d9a 100644 --- a/docs/typedoc/assets/search.js +++ b/docs/typedoc/assets/search.js @@ -1 +1 @@ -window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file +window.searchData = "data:application/octet-stream;base64,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"; \ No newline at end of file diff --git a/docs/typedoc/classes/AverageAdvance.html b/docs/typedoc/classes/AverageAdvance.html index b13b2fe..07e24a8 100644 --- a/docs/typedoc/classes/AverageAdvance.html +++ b/docs/typedoc/classes/AverageAdvance.html @@ -1,11 +1,15 @@ AverageAdvance | @carlosnunezmx/aru

Get the student average advance

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/:programID/:initialAcademicTerm/avances-promedio"
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: undefined
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/:programID/:initialAcademicTerm/avances-promedio"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/Credits.html b/docs/typedoc/classes/Credits.html index 698a334..4060029 100644 --- a/docs/typedoc/classes/Credits.html +++ b/docs/typedoc/classes/Credits.html @@ -1,11 +1,15 @@ Credits | @carlosnunezmx/aru

Use this class to create a new method that requires a login, it contains the AuthToken and Token, remember to call the exec method before using the AuthToken by super.exec()

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/:programID/:initialAcademicTerm/creditos"
isTokenUsed: boolean = false
props?: CreditsInit

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: undefined
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/:programID/:initialAcademicTerm/creditos"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false
props?: CreditsInit

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/EliminarMateria.html b/docs/typedoc/classes/EliminarMateria.html index 16bd5e3..1c833f6 100644 --- a/docs/typedoc/classes/EliminarMateria.html +++ b/docs/typedoc/classes/EliminarMateria.html @@ -1,12 +1,15 @@ EliminarMateria | @carlosnunezmx/aru

Delete a subject from the student's schedule by NRC

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-registro/v1/cursos"
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-registro/v1/cursos"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/Kardex.html b/docs/typedoc/classes/Kardex.html index 58267d7..83cf5fe 100644 --- a/docs/typedoc/classes/Kardex.html +++ b/docs/typedoc/classes/Kardex.html @@ -1,11 +1,15 @@ Kardex | @carlosnunezmx/aru

Use this class to create a new method that requires a login, it contains the AuthToken and Token, remember to call the exec method before using the AuthToken by super.exec()

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/kardex"
isTokenUsed: boolean = false
props?: KardexInit

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: undefined
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/kardex"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false
props?: KardexInit

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/Login.html b/docs/typedoc/classes/Login.html index 712ab30..7bc40e3 100644 --- a/docs/typedoc/classes/Login.html +++ b/docs/typedoc/classes/Login.html @@ -1,7 +1,8 @@ Login | @carlosnunezmx/aru

Used for login into the Leo, it's required for most of the methods. Use the method exec() before use for another class constructor

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

AuthToken: string
Password: string
Route: string = "https://micro-leo.udg.mx/login/v1/validar"
StudentCode?: string
Token: TokenType = ...
User: string
isTokenUsed: boolean = false
options?: Partial<Options>

Methods

  • Execute the login method, it's required for most of the methods. +

Constructors

Properties

AuthToken: string
Cache?: Cache
Password: string
Route: string = "https://micro-leo.udg.mx/login/v1/validar"
StudentCode?: string
Token: TokenType = ...
User: string
isTokenUsed: boolean = false
options?: Partial<Options>

Methods

  • Execute the login method, it's required for most of the methods. This will load the token and the student code on the class

    -

    Returns Promise<void>

  • Get the token and its vigency

    -

    Returns Required<TokenType>

\ No newline at end of file +

Parameters

Returns undefined | Plans

\ No newline at end of file diff --git a/docs/typedoc/classes/Method.AuthMethod.html b/docs/typedoc/classes/Method.AuthMethod.html index 58642e1..9995ef2 100644 --- a/docs/typedoc/classes/Method.AuthMethod.html +++ b/docs/typedoc/classes/Method.AuthMethod.html @@ -1,10 +1,14 @@ -AuthMethod | @carlosnunezmx/aru

Class AuthMethod<Return>Abstract

Use this class to create a new method that requires a login, it contains the AuthToken and Token, remember to call the exec method before using the AuthToken by super.exec()

-

Type Parameters

  • Return = void

Hierarchy (view full)

Constructors

constructor +AuthMethod | @carlosnunezmx/aru

Class AuthMethod<Return, initType>Abstract

Use this class to create a new method that requires a login, it contains the AuthToken and Token, remember to call the exec method before using the AuthToken by super.exec()

+

Type Parameters

  • Return = void
  • initType = undefined

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = ""
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: initType
Route: string = ""
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/Method.Method.html b/docs/typedoc/classes/Method.Method.html index 241d8c4..41fdbea 100644 --- a/docs/typedoc/classes/Method.Method.html +++ b/docs/typedoc/classes/Method.Method.html @@ -1,10 +1,10 @@ Method | @carlosnunezmx/aru

Use this class to create a new method, it contains the AuthToken, remember to call the exec method before using the AuthToken by super.exec()

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

AuthToken: string
AuthTokenGenerator: LeoAuth = ...
Route: string = ""
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

AuthToken: string
AuthTokenGenerator: LeoAuth = ...
Route: string = ""
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/Projections.html b/docs/typedoc/classes/Projections.html index aca3c03..a9be9cc 100644 --- a/docs/typedoc/classes/Projections.html +++ b/docs/typedoc/classes/Projections.html @@ -1,11 +1,14 @@ Projections | @carlosnunezmx/aru

Get the student projection, this contains the pending subjects to take

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:id-alumno/:id-programa/:id-ciclo-admision/proyecciones"
isTokenUsed: boolean = false
props?: ProjectionInit

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: ProjectionInit
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:id-alumno/:id-programa/:id-ciclo-admision/proyecciones"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/RegistrarMateria.html b/docs/typedoc/classes/RegistrarMateria.html index 451dd54..2c1ff3b 100644 --- a/docs/typedoc/classes/RegistrarMateria.html +++ b/docs/typedoc/classes/RegistrarMateria.html @@ -1,12 +1,15 @@ RegistrarMateria | @carlosnunezmx/aru

Add a subject from the student's schedule by NRC

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-registro/v1/"
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-registro/v1/"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/RequestError.html b/docs/typedoc/classes/RequestError.html index 15a2a21..98a7566 100644 --- a/docs/typedoc/classes/RequestError.html +++ b/docs/typedoc/classes/RequestError.html @@ -1,6 +1,6 @@ RequestError | @carlosnunezmx/aru

Class RequestError<BodyType>

Class for handle http requests error by throwing this class

Todo

Documentar todos los errores

-

Type Parameters

  • BodyType = null

Hierarchy

  • Error
    • RequestError

Constructors

Type Parameters

  • BodyType = null

Hierarchy

  • Error
    • RequestError

Constructors

Properties

Response body cause? @@ -13,9 +13,9 @@ stackTraceLimit

Methods

Constructors

Properties

Response: Response
body: null | Promise<BodyType> = null
cause?: unknown
message: string
name: string
stack?: string
status: number
url: string
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

+

Constructors

Properties

Response: Response
body: null | Promise<BodyType> = null
cause?: unknown
message: string
name: string
stack?: string
status: number
url: string
prepareStackTrace?: ((err, stackTraces) => any)

Optional override for formatting stack traces

Type declaration

    • (err, stackTraces): any
    • Parameters

      • err: Error
      • stackTraces: CallSite[]

      Returns any

stackTraceLimit: number

Methods

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

  • Create .stack property on a target object

    Parameters

    • targetObject: object
    • Optional constructorOpt: Function

    Returns void

\ No newline at end of file diff --git a/docs/typedoc/classes/Schedule.html b/docs/typedoc/classes/Schedule.html index fd1cf90..8676908 100644 --- a/docs/typedoc/classes/Schedule.html +++ b/docs/typedoc/classes/Schedule.html @@ -1,11 +1,15 @@ Schedule | @carlosnunezmx/aru

Get the student schedule, this contains the student schedule and the teacher info

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/:programID/:academicTerm/horarios"
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: undefined
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/:programID/:academicTerm/horarios"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/StudentCard.html b/docs/typedoc/classes/StudentCard.html index 35ac117..c6e558f 100644 --- a/docs/typedoc/classes/StudentCard.html +++ b/docs/typedoc/classes/StudentCard.html @@ -1,11 +1,15 @@ StudentCard | @carlosnunezmx/aru

Get the virtual student card info, this contains student info, and rectory info

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://soyudg.udg.mx/alumnos/show?encryptedId=:studentCode"
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: undefined
Route: string = "https://soyudg.udg.mx/alumnos/show?encryptedId=:studentCode"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/StudentInfo.html b/docs/typedoc/classes/StudentInfo.html index 987683d..5908f49 100644 --- a/docs/typedoc/classes/StudentInfo.html +++ b/docs/typedoc/classes/StudentInfo.html @@ -1,10 +1,14 @@ StudentInfo | @carlosnunezmx/aru

Get the student info, photo and signature

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/sii-alumnos/v1/:studentCode/datos-personales"
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: undefined
Route: string = "https://micro-leo.udg.mx/sii-alumnos/v1/:studentCode/datos-personales"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/classes/StudentPlans.html b/docs/typedoc/classes/StudentPlans.html index 6f0ed73..5556ae7 100644 --- a/docs/typedoc/classes/StudentPlans.html +++ b/docs/typedoc/classes/StudentPlans.html @@ -1,10 +1,14 @@ StudentPlans | @carlosnunezmx/aru

Get the student available plans

-

Hierarchy (view full)

Constructors

Hierarchy (view full)

Constructors

Properties

Auth: Login
AuthToken: string
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/planes-estudios"
isTokenUsed: boolean = false

Methods

\ No newline at end of file +

Constructors

Properties

Auth: Login
AuthToken: string
Props?: undefined
Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/planes-estudios"
ShouldUpCache: boolean = true
isTokenUsed: boolean = false

Methods

\ No newline at end of file diff --git a/docs/typedoc/functions/ErrorTypes.ErrorHandling.html b/docs/typedoc/functions/ErrorTypes.ErrorHandling.html index d8a2243..c26c99e 100644 --- a/docs/typedoc/functions/ErrorTypes.ErrorHandling.html +++ b/docs/typedoc/functions/ErrorTypes.ErrorHandling.html @@ -1 +1 @@ -ErrorHandling | @carlosnunezmx/aru
\ No newline at end of file +ErrorHandling | @carlosnunezmx/aru
\ No newline at end of file diff --git a/docs/typedoc/modules/ErrorTypes.html b/docs/typedoc/modules/ErrorTypes.html index a81d6f0..31138d1 100644 --- a/docs/typedoc/modules/ErrorTypes.html +++ b/docs/typedoc/modules/ErrorTypes.html @@ -1,4 +1,4 @@ -ErrorTypes | @carlosnunezmx/aru

Namespace ErrorTypes

References

MethodNotAllowedType +ErrorTypes | @carlosnunezmx/aru

Namespace ErrorTypes

References

Type Aliases

UnsupportedType diff --git a/docs/typedoc/modules/KardexTypes.html b/docs/typedoc/modules/KardexTypes.html index 3a8e138..262db49 100644 --- a/docs/typedoc/modules/KardexTypes.html +++ b/docs/typedoc/modules/KardexTypes.html @@ -1,4 +1,4 @@ -KardexTypes | @carlosnunezmx/aru

Namespace KardexTypes

Index

Type Aliases

CredTaesItem +KardexTypes | @carlosnunezmx/aru

Namespace KardexTypes

Index

Type Aliases

CredTaesItem KardexType historiaAcademicaKardexItem planesEstudios diff --git a/docs/typedoc/modules/Method.html b/docs/typedoc/modules/Method.html index 1e5da04..0681e5d 100644 --- a/docs/typedoc/modules/Method.html +++ b/docs/typedoc/modules/Method.html @@ -1,3 +1,3 @@ -Method | @carlosnunezmx/aru

Namespace Method

Index

Classes

AuthMethod +Method | @carlosnunezmx/aru
\ No newline at end of file diff --git a/docs/typedoc/modules/RegistroMateriaTypes.html b/docs/typedoc/modules/RegistroMateriaTypes.html index 80dc222..b6727bd 100644 --- a/docs/typedoc/modules/RegistroMateriaTypes.html +++ b/docs/typedoc/modules/RegistroMateriaTypes.html @@ -1,4 +1,4 @@ -RegistroMateriaTypes | @carlosnunezmx/aru

Namespace RegistroMateriaTypes

References

RegistrarMateria +RegistroMateriaTypes | @carlosnunezmx/aru

Namespace RegistroMateriaTypes

References

Re-exports RegistrarMateria
\ No newline at end of file diff --git a/docs/typedoc/types/AvAdvanceType.html b/docs/typedoc/types/AvAdvanceType.html index e2daaca..188b2da 100644 --- a/docs/typedoc/types/AvAdvanceType.html +++ b/docs/typedoc/types/AvAdvanceType.html @@ -1 +1 @@ -AvAdvanceType | @carlosnunezmx/aru

Type alias AvAdvanceType

AvAdvanceType: {
    avance: AvanceItem[];
    promgeneral: string;
}

Type declaration

\ No newline at end of file +AvAdvanceType | @carlosnunezmx/aru

Type alias AvAdvanceType

AvAdvanceType: {
    avance: AvanceItem[];
    promgeneral: string;
}

Type declaration

\ No newline at end of file diff --git a/docs/typedoc/types/AvanceItem.html b/docs/typedoc/types/AvanceItem.html index 4f02585..b6ca517 100644 --- a/docs/typedoc/types/AvanceItem.html +++ b/docs/typedoc/types/AvanceItem.html @@ -1 +1 @@ -AvanceItem | @carlosnunezmx/aru

Type alias AvanceItem

AvanceItem: {
    cicladmision: string;
    ciclo: string;
    credciclos: string;
    idPrograma: string;
    idsede: string;
    porcavance: string;
    promciclo: string;
    siglcentro: string;
}

Type declaration

  • cicladmision: string
  • ciclo: string
  • credciclos: string
  • idPrograma: string
  • idsede: string
  • porcavance: string
  • promciclo: string
  • siglcentro: string
\ No newline at end of file +AvanceItem | @carlosnunezmx/aru

Type alias AvanceItem

AvanceItem: {
    cicladmision: string;
    ciclo: string;
    credciclos: string;
    idPrograma: string;
    idsede: string;
    porcavance: string;
    promciclo: string;
    siglcentro: string;
}

Type declaration

  • cicladmision: string
  • ciclo: string
  • credciclos: string
  • idPrograma: string
  • idsede: string
  • porcavance: string
  • promciclo: string
  • siglcentro: string
\ No newline at end of file diff --git a/docs/typedoc/types/AverageAdvanceInit.html b/docs/typedoc/types/AverageAdvanceInit.html index 48e1a13..2a15903 100644 --- a/docs/typedoc/types/AverageAdvanceInit.html +++ b/docs/typedoc/types/AverageAdvanceInit.html @@ -1,4 +1,4 @@ AverageAdvanceInit | @carlosnunezmx/aru

Type alias AverageAdvanceInit

AverageAdvanceInit: {
    cicladmision: string;
    idprograma: string;
}

Initial data for AverageAdvance

Type declaration

  • cicladmision: string

    formato 20XX-A|B

    Description

    Start cycle where the student started

    -
  • idprograma: string
\ No newline at end of file +
  • idprograma: string
  • \ No newline at end of file diff --git a/docs/typedoc/types/Card.html b/docs/typedoc/types/Card.html index 8b0ff7b..999a3b9 100644 --- a/docs/typedoc/types/Card.html +++ b/docs/typedoc/types/Card.html @@ -1 +1 @@ -Card | @carlosnunezmx/aru

    Type alias Card

    Card: {
        apellido_materno: string;
        apellido_paterno: string;
        centro: string;
        centroDesc: string;
        curp: string;
        error?: string;
        firma: string;
        firmaRector: string;
        foto: string;
        imss: string;
        nombre: string;
        nombreRector: string;
        sede: string;
        tarjeta_informador: unknown[];
    }

    Type declaration

    • apellido_materno: string
    • apellido_paterno: string
    • centro: string
    • centroDesc: string
    • curp: string
    • Optional error?: string
    • firma: string
    • firmaRector: string
    • foto: string
    • imss: string
    • nombre: string
    • nombreRector: string
    • sede: string
    • tarjeta_informador: unknown[]
    \ No newline at end of file +Card | @carlosnunezmx/aru

    Type alias Card

    Card: {
        apellido_materno: string;
        apellido_paterno: string;
        centro: string;
        centroDesc: string;
        curp: string;
        error?: string;
        firma: string;
        firmaRector: string;
        foto: string;
        imss: string;
        nombre: string;
        nombreRector: string;
        sede: string;
        tarjeta_informador: unknown[];
    }

    Type declaration

    • apellido_materno: string
    • apellido_paterno: string
    • centro: string
    • centroDesc: string
    • curp: string
    • Optional error?: string
    • firma: string
    • firmaRector: string
    • foto: string
    • imss: string
    • nombre: string
    • nombreRector: string
    • sede: string
    • tarjeta_informador: unknown[]
    \ No newline at end of file diff --git a/docs/typedoc/types/CreditsInit.html b/docs/typedoc/types/CreditsInit.html index 7031e1e..6e22149 100644 --- a/docs/typedoc/types/CreditsInit.html +++ b/docs/typedoc/types/CreditsInit.html @@ -1,2 +1,2 @@ CreditsInit | @carlosnunezmx/aru

    Type alias CreditsInit

    CreditsInit: {
        cicladmision: string;
        idprograma: string;
    }

    Type declaration

    • cicladmision: string

      Description

      Format: YYYY-{A|B}

      -
    • idprograma: string
    \ No newline at end of file +
  • idprograma: string
  • \ No newline at end of file diff --git a/docs/typedoc/types/Dias.html b/docs/typedoc/types/Dias.html index 6001fc6..6deb34e 100644 --- a/docs/typedoc/types/Dias.html +++ b/docs/typedoc/types/Dias.html @@ -1 +1 @@ -Dias | @carlosnunezmx/aru

    Type alias Dias

    Dias: "Lunes" | "Martes" | "Miercoles" | "Jueves" | "Viernes" | "Sabado" | "Domingo"
    \ No newline at end of file +Dias | @carlosnunezmx/aru

    Type alias Dias

    Dias: "Lunes" | "Martes" | "Miercoles" | "Jueves" | "Viernes" | "Sabado" | "Domingo"
    \ No newline at end of file diff --git a/docs/typedoc/types/DomicilioFormated.html b/docs/typedoc/types/DomicilioFormated.html index 2c7263d..bb8d4b8 100644 --- a/docs/typedoc/types/DomicilioFormated.html +++ b/docs/typedoc/types/DomicilioFormated.html @@ -1 +1 @@ -DomicilioFormated | @carlosnunezmx/aru

    Type alias DomicilioFormated

    DomicilioFormated: {
        cp: string;
        estado: string;
        municipio: string;
        pais: string;
    }

    Type declaration

    • cp: string
    • estado: string
    • municipio: string
    • pais: string
    \ No newline at end of file +DomicilioFormated | @carlosnunezmx/aru

    Type alias DomicilioFormated

    DomicilioFormated: {
        cp: string;
        estado: string;
        municipio: string;
        pais: string;
    }

    Type declaration

    • cp: string
    • estado: string
    • municipio: string
    • pais: string
    \ No newline at end of file diff --git a/docs/typedoc/types/ErrorTypes.UnsupportedType.html b/docs/typedoc/types/ErrorTypes.UnsupportedType.html index 1cd0e73..f5b8c95 100644 --- a/docs/typedoc/types/ErrorTypes.UnsupportedType.html +++ b/docs/typedoc/types/ErrorTypes.UnsupportedType.html @@ -1 +1 @@ -UnsupportedType | @carlosnunezmx/aru
    UnsupportedType: {
        error: "Unsupported Media Type";
        path: string;
        status: 415;
        timestamp: number;
    }

    Type declaration

    • error: "Unsupported Media Type"
    • path: string
    • status: 415
    • timestamp: number
    \ No newline at end of file +UnsupportedType | @carlosnunezmx/aru
    UnsupportedType: {
        error: "Unsupported Media Type";
        path: string;
        status: 415;
        timestamp: number;
    }

    Type declaration

    • error: "Unsupported Media Type"
    • path: string
    • status: 415
    • timestamp: number
    \ No newline at end of file diff --git a/docs/typedoc/types/Horario.html b/docs/typedoc/types/Horario.html index 3197dbc..8becb6b 100644 --- a/docs/typedoc/types/Horario.html +++ b/docs/typedoc/types/Horario.html @@ -1,3 +1,3 @@ Horario | @carlosnunezmx/aru

    Type alias Horario

    Horario: {
        fechfin: string;
        fechinicio: string;
        horas: Horas[];
    }

    Type declaration

    • fechfin: string

      formato: dd-mm-yyyy

    • fechinicio: string

      formato: dd-mm-yyyy

      -
    • horas: Horas[]
    \ No newline at end of file +
  • horas: Horas[]
  • \ No newline at end of file diff --git a/docs/typedoc/types/Horas.html b/docs/typedoc/types/Horas.html index d070f62..ddf495b 100644 --- a/docs/typedoc/types/Horas.html +++ b/docs/typedoc/types/Horas.html @@ -1,2 +1,2 @@ Horas | @carlosnunezmx/aru

    Type alias Horas

    Horas: {
        dia: Dias;
        edificio: string;
        hora: string;
        idedificio: string;
        numesalon: string;
    }

    Type declaration

    • dia: Dias
    • edificio: string
    • hora: string

      formato: (start)hhmm-hhmm(end)

      -
    • idedificio: string
    • numesalon: string
    \ No newline at end of file +
  • idedificio: string
  • numesalon: string
  • \ No newline at end of file diff --git a/docs/typedoc/types/KardexTypes.CredTaesItem.html b/docs/typedoc/types/KardexTypes.CredTaesItem.html index 6f3eb06..abcb111 100644 --- a/docs/typedoc/types/KardexTypes.CredTaesItem.html +++ b/docs/typedoc/types/KardexTypes.CredTaesItem.html @@ -1 +1 @@ -CredTaesItem | @carlosnunezmx/aru
    CredTaesItem: {
        credadqutae: string;
        credfalttae: string;
        credrequtae: string;
        desctae: string;
    }

    Type declaration

    • credadqutae: string
    • credfalttae: string
    • credrequtae: string
    • desctae: string
    \ No newline at end of file +CredTaesItem | @carlosnunezmx/aru
    CredTaesItem: {
        credadqutae: string;
        credfalttae: string;
        credrequtae: string;
        desctae: string;
    }

    Type declaration

    • credadqutae: string
    • credfalttae: string
    • credrequtae: string
    • desctae: string
    \ No newline at end of file diff --git a/docs/typedoc/types/KardexTypes.KardexType.html b/docs/typedoc/types/KardexTypes.KardexType.html index a7d4044..e99918e 100644 --- a/docs/typedoc/types/KardexTypes.KardexType.html +++ b/docs/typedoc/types/KardexTypes.KardexType.html @@ -1 +1 @@ -KardexType | @carlosnunezmx/aru
    KardexType: {
        certificado: "PARCIAL" | "COMPLETO";
        creditos: {
            credadquirido: string;
            credfaltantes: string;
            credporcentaj: string;
            credtotaprogr: string;
        };
        curriculares: unknown[] | null;
        datosPersonales: {
            nombre: string;
        };
        historiaAcademicaKardex: historiaAcademicaKardexItem[];
        informacion: string;
        planesEstudios: planesEstudio;
        promedios: {
            promgeneral: string;
        };
        resumenCreditos: resumenCreditosItem[];
    }

    Type declaration

    • certificado: "PARCIAL" | "COMPLETO"
    • creditos: {
          credadquirido: string;
          credfaltantes: string;
          credporcentaj: string;
          credtotaprogr: string;
      }
      • credadquirido: string
      • credfaltantes: string
      • credporcentaj: string
      • credtotaprogr: string
    • curriculares: unknown[] | null
    • datosPersonales: {
          nombre: string;
      }
      • nombre: string
    • historiaAcademicaKardex: historiaAcademicaKardexItem[]
    • informacion: string
    • planesEstudios: planesEstudio
    • promedios: {
          promgeneral: string;
      }
      • promgeneral: string
    • resumenCreditos: resumenCreditosItem[]
    \ No newline at end of file +KardexType | @carlosnunezmx/aru
    KardexType: {
        certificado: "PARCIAL" | "COMPLETO";
        creditos: {
            credadquirido: string;
            credfaltantes: string;
            credporcentaj: string;
            credtotaprogr: string;
        };
        curriculares: unknown[] | null;
        datosPersonales: {
            nombre: string;
        };
        historiaAcademicaKardex: historiaAcademicaKardexItem[];
        informacion: string;
        planesEstudios: planesEstudio;
        promedios: {
            promgeneral: string;
        };
        resumenCreditos: resumenCreditosItem[];
    }

    Type declaration

    • certificado: "PARCIAL" | "COMPLETO"
    • creditos: {
          credadquirido: string;
          credfaltantes: string;
          credporcentaj: string;
          credtotaprogr: string;
      }
      • credadquirido: string
      • credfaltantes: string
      • credporcentaj: string
      • credtotaprogr: string
    • curriculares: unknown[] | null
    • datosPersonales: {
          nombre: string;
      }
      • nombre: string
    • historiaAcademicaKardex: historiaAcademicaKardexItem[]
    • informacion: string
    • planesEstudios: planesEstudio
    • promedios: {
          promgeneral: string;
      }
      • promgeneral: string
    • resumenCreditos: resumenCreditosItem[]
    \ No newline at end of file diff --git a/docs/typedoc/types/KardexTypes.historiaAcademicaKardexItem.html b/docs/typedoc/types/KardexTypes.historiaAcademicaKardexItem.html index 9929c9e..816b76d 100644 --- a/docs/typedoc/types/KardexTypes.historiaAcademicaKardexItem.html +++ b/docs/typedoc/types/KardexTypes.historiaAcademicaKardexItem.html @@ -1 +1 @@ -historiaAcademicaKardexItem | @carlosnunezmx/aru

    Type alias historiaAcademicaKardexItem

    historiaAcademicaKardexItem: {
        calinumeletra: string;
        clasificacion: string;
        clavmateria: string;
        creditos: string;
        crn: string;
        fechcaptura: string;
        horacurso: string;
        idsede: string;
        idtae: null | string;
        tae: null | string;
        tipocaptura: string;
        titucurso: string;
    }

    Type declaration

    • calinumeletra: string
    • clasificacion: string
    • clavmateria: string
    • creditos: string
    • crn: string
    • fechcaptura: string
    • horacurso: string
    • idsede: string
    • idtae: null | string
    • tae: null | string
    • tipocaptura: string
    • titucurso: string
    \ No newline at end of file +historiaAcademicaKardexItem | @carlosnunezmx/aru

    Type alias historiaAcademicaKardexItem

    historiaAcademicaKardexItem: {
        calinumeletra: string;
        clasificacion: string;
        clavmateria: string;
        creditos: string;
        crn: string;
        fechcaptura: string;
        horacurso: string;
        idsede: string;
        idtae: null | string;
        tae: null | string;
        tipocaptura: string;
        titucurso: string;
    }

    Type declaration

    • calinumeletra: string
    • clasificacion: string
    • clavmateria: string
    • creditos: string
    • crn: string
    • fechcaptura: string
    • horacurso: string
    • idsede: string
    • idtae: null | string
    • tae: null | string
    • tipocaptura: string
    • titucurso: string
    \ No newline at end of file diff --git a/docs/typedoc/types/KardexTypes.planesEstudios.html b/docs/typedoc/types/KardexTypes.planesEstudios.html index 213fd32..0237a71 100644 --- a/docs/typedoc/types/KardexTypes.planesEstudios.html +++ b/docs/typedoc/types/KardexTypes.planesEstudios.html @@ -1 +1 @@ -planesEstudios | @carlosnunezmx/aru
    planesEstudios: {
        certificacion: string;
        cicladmision: string;
        ciclefectivo: string;
        desccentro: string;
        descestatus: string;
        descnivel: string;
        descprograma: string;
        descsede: string;
        idPlan: string;
        idcentro: string;
        idestatus: string;
        idprograma: string;
        idsede: string;
        nivel: string;
        siglacentro: string;
        siiacampus: string;
        tipoestatus: string;
    }

    Type declaration

    • certificacion: string
    • cicladmision: string
    • ciclefectivo: string
    • desccentro: string
    • descestatus: string
    • descnivel: string
    • descprograma: string
    • descsede: string
    • idPlan: string
    • idcentro: string
    • idestatus: string
    • idprograma: string
    • idsede: string
    • nivel: string
    • siglacentro: string
    • siiacampus: string
    • tipoestatus: string
    \ No newline at end of file +planesEstudios | @carlosnunezmx/aru
    planesEstudios: {
        certificacion: string;
        cicladmision: string;
        ciclefectivo: string;
        desccentro: string;
        descestatus: string;
        descnivel: string;
        descprograma: string;
        descsede: string;
        idPlan: string;
        idcentro: string;
        idestatus: string;
        idprograma: string;
        idsede: string;
        nivel: string;
        siglacentro: string;
        siiacampus: string;
        tipoestatus: string;
    }

    Type declaration

    • certificacion: string
    • cicladmision: string
    • ciclefectivo: string
    • desccentro: string
    • descestatus: string
    • descnivel: string
    • descprograma: string
    • descsede: string
    • idPlan: string
    • idcentro: string
    • idestatus: string
    • idprograma: string
    • idsede: string
    • nivel: string
    • siglacentro: string
    • siiacampus: string
    • tipoestatus: string
    \ No newline at end of file diff --git a/docs/typedoc/types/KardexTypes.resumenCreditosItem.html b/docs/typedoc/types/KardexTypes.resumenCreditosItem.html index 19652b4..8db5c72 100644 --- a/docs/typedoc/types/KardexTypes.resumenCreditosItem.html +++ b/docs/typedoc/types/KardexTypes.resumenCreditosItem.html @@ -1 +1 @@ -resumenCreditosItem | @carlosnunezmx/aru
    resumenCreditosItem: {
        areaformacion: string;
        credTaes: null | CredTaesItem[];
        credadquaerea: string;
        credfaltaerea: string;
        credrequaerea: string;
    }

    Type declaration

    • areaformacion: string
    • credTaes: null | CredTaesItem[]
    • credadquaerea: string
    • credfaltaerea: string
    • credrequaerea: string
    \ No newline at end of file +resumenCreditosItem | @carlosnunezmx/aru
    resumenCreditosItem: {
        areaformacion: string;
        credTaes: null | CredTaesItem[];
        credadquaerea: string;
        credfaltaerea: string;
        credrequaerea: string;
    }

    Type declaration

    • areaformacion: string
    • credTaes: null | CredTaesItem[]
    • credadquaerea: string
    • credfaltaerea: string
    • credrequaerea: string
    \ No newline at end of file diff --git a/docs/typedoc/types/Materia.html b/docs/typedoc/types/Materia.html index fcb317a..10a5483 100644 --- a/docs/typedoc/types/Materia.html +++ b/docs/typedoc/types/Materia.html @@ -1 +1 @@ -Materia | @carlosnunezmx/aru

    Type alias Materia

    Materia: {
        creditos: string;
        crn: string;
        horarios: Horario[];
        idcampus: string;
        idcurso: string;
        nombcurso: string;
        numeseccion: string;
        profesores: Profesor[];
    }

    Type declaration

    • creditos: string
    • crn: string
    • horarios: Horario[]
    • idcampus: string
    • idcurso: string
    • nombcurso: string
    • numeseccion: string
    • profesores: Profesor[]
    \ No newline at end of file +Materia | @carlosnunezmx/aru

    Type alias Materia

    Materia: {
        creditos: string;
        crn: string;
        horarios: Horario[];
        idcampus: string;
        idcurso: string;
        nombcurso: string;
        numeseccion: string;
        profesores: Profesor[];
    }

    Type declaration

    • creditos: string
    • crn: string
    • horarios: Horario[]
    • idcampus: string
    • idcurso: string
    • nombcurso: string
    • numeseccion: string
    • profesores: Profesor[]
    \ No newline at end of file diff --git a/docs/typedoc/types/MethodNotAllowedType.html b/docs/typedoc/types/MethodNotAllowedType.html index dc30b35..d7d39ef 100644 --- a/docs/typedoc/types/MethodNotAllowedType.html +++ b/docs/typedoc/types/MethodNotAllowedType.html @@ -1,2 +1,2 @@ MethodNotAllowedType | @carlosnunezmx/aru

    Type alias MethodNotAllowedType

    MethodNotAllowedType: {
        error: string;
        path: string;
        status: number;
        timestamp: number;
    }

    Error code 405

    -

    Type declaration

    • error: string
    • path: string
    • status: number
    • timestamp: number
    \ No newline at end of file +

    Type declaration

    • error: string
    • path: string
    • status: number
    • timestamp: number
    \ No newline at end of file diff --git a/docs/typedoc/types/Plans.html b/docs/typedoc/types/Plans.html index cf468cb..3e306ab 100644 --- a/docs/typedoc/types/Plans.html +++ b/docs/typedoc/types/Plans.html @@ -1 +1 @@ -Plans | @carlosnunezmx/aru

    Type alias Plans

    Plans: {
        certificacion: string;
        cicladmision: string;
        ciclefectivo: string;
        desccentro: string;
        descestatus: string;
        descnivel: string;
        descprograma: string;
        descsede: sting;
        emailudg: string;
        idPlan: string;
        idcentro: string;
        idestatus: string;
        idprograma: string;
        idsede: string;
        nivel: string;
        siglacentro: string;
        siiacampus: string;
        tipoestatus: string;
    }[]

    Type declaration

    • certificacion: string
    • cicladmision: string
    • ciclefectivo: string
    • desccentro: string
    • descestatus: string
    • descnivel: string
    • descprograma: string
    • descsede: sting
    • emailudg: string
    • idPlan: string
    • idcentro: string
    • idestatus: string
    • idprograma: string
    • idsede: string
    • nivel: string
    • siglacentro: string
    • siiacampus: string
    • tipoestatus: string
    \ No newline at end of file +Plans | @carlosnunezmx/aru

    Type alias Plans

    Plans: {
        certificacion: string;
        cicladmision: string;
        ciclefectivo: string;
        desccentro: string;
        descestatus: string;
        descnivel: string;
        descprograma: string;
        descsede: sting;
        emailudg: string;
        idPlan: string;
        idcentro: string;
        idestatus: string;
        idprograma: string;
        idsede: string;
        nivel: string;
        siglacentro: string;
        siiacampus: string;
        tipoestatus: string;
    }[]

    Type declaration

    • certificacion: string
    • cicladmision: string
    • ciclefectivo: string
    • desccentro: string
    • descestatus: string
    • descnivel: string
    • descprograma: string
    • descsede: sting
    • emailudg: string
    • idPlan: string
    • idcentro: string
    • idestatus: string
    • idprograma: string
    • idsede: string
    • nivel: string
    • siglacentro: string
    • siiacampus: string
    • tipoestatus: string
    \ No newline at end of file diff --git a/docs/typedoc/types/Profesor.html b/docs/typedoc/types/Profesor.html index b278ca1..338ae7c 100644 --- a/docs/typedoc/types/Profesor.html +++ b/docs/typedoc/types/Profesor.html @@ -1 +1 @@ -Profesor | @carlosnunezmx/aru

    Type alias Profesor

    Profesor: {
        apellidos: string;
        idprofesor: string;
        nombres: string;
    }

    Type declaration

    • apellidos: string
    • idprofesor: string
    • nombres: string
    \ No newline at end of file +Profesor | @carlosnunezmx/aru

    Type alias Profesor

    Profesor: {
        apellidos: string;
        idprofesor: string;
        nombres: string;
    }

    Type declaration

    • apellidos: string
    • idprofesor: string
    • nombres: string
    \ No newline at end of file diff --git a/docs/typedoc/types/ProjectionSubjectType.html b/docs/typedoc/types/ProjectionSubjectType.html index 804fabb..7b346ce 100644 --- a/docs/typedoc/types/ProjectionSubjectType.html +++ b/docs/typedoc/types/ProjectionSubjectType.html @@ -1 +1 @@ -ProjectionSubjectType | @carlosnunezmx/aru

    Type alias ProjectionSubjectType

    ProjectionSubjectType: {
        creditos: string;
        idMateria: string;
        idsubj: string;
        materia: string;
    }

    Type declaration

    • creditos: string
    • idMateria: string
    • idsubj: string
    • materia: string
    \ No newline at end of file +ProjectionSubjectType | @carlosnunezmx/aru

    Type alias ProjectionSubjectType

    ProjectionSubjectType: {
        creditos: string;
        idMateria: string;
        idsubj: string;
        materia: string;
    }

    Type declaration

    • creditos: string
    • idMateria: string
    • idsubj: string
    • materia: string
    \ No newline at end of file diff --git a/docs/typedoc/types/RegistroMateriaTypes.MateriaRegistrada.html b/docs/typedoc/types/RegistroMateriaTypes.MateriaRegistrada.html index 3681568..95e40c0 100644 --- a/docs/typedoc/types/RegistroMateriaTypes.MateriaRegistrada.html +++ b/docs/typedoc/types/RegistroMateriaTypes.MateriaRegistrada.html @@ -1,2 +1,2 @@ MateriaRegistrada | @carlosnunezmx/aru
    MateriaRegistrada: string[]

    Este arreglo muestra los nrc's

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/typedoc/types/RegistroMateriaTypes.RegistrarMateriaInit.html b/docs/typedoc/types/RegistroMateriaTypes.RegistrarMateriaInit.html index 944e22d..8bc6f4f 100644 --- a/docs/typedoc/types/RegistroMateriaTypes.RegistrarMateriaInit.html +++ b/docs/typedoc/types/RegistroMateriaTypes.RegistrarMateriaInit.html @@ -1,2 +1,2 @@ RegistrarMateriaInit | @carlosnunezmx/aru
    RegistrarMateriaInit: {
        ciclo: string;
        cursos: string[];
        idcentro?: string;
        idprograma?: string;
        nivel?: string;
    }

    Type declaration

    • ciclo: string
    • cursos: string[]

      NRC's de las materias a registrar

      -
    • Optional idcentro?: string
    • Optional idprograma?: string
    • Optional nivel?: string
    \ No newline at end of file +
  • Optional idcentro?: string
  • Optional idprograma?: string
  • Optional nivel?: string
  • \ No newline at end of file diff --git a/docs/typedoc/types/ScheduleInit.html b/docs/typedoc/types/ScheduleInit.html index d1921ff..4a9c651 100644 --- a/docs/typedoc/types/ScheduleInit.html +++ b/docs/typedoc/types/ScheduleInit.html @@ -1,2 +1,2 @@ ScheduleInit | @carlosnunezmx/aru

    Type alias ScheduleInit

    ScheduleInit: {
        ciclo: string;
        idprograma?: string;
    }

    Type declaration

    • ciclo: string

      format 20xx-A|B

      -
    • Optional idprograma?: string
    \ No newline at end of file +
  • Optional idprograma?: string
  • \ No newline at end of file diff --git a/docs/typedoc/types/SoyUdgError.html b/docs/typedoc/types/SoyUdgError.html index a8bd761..77facc5 100644 --- a/docs/typedoc/types/SoyUdgError.html +++ b/docs/typedoc/types/SoyUdgError.html @@ -1 +1 @@ -SoyUdgError | @carlosnunezmx/aru

    Type alias SoyUdgError

    SoyUdgError: {
        code: number;
        data: {
            error: string;
            tarjeta_informador: unknown[];
        };
    }

    Type declaration

    • code: number
    • data: {
          error: string;
          tarjeta_informador: unknown[];
      }
      • error: string
      • tarjeta_informador: unknown[]
    \ No newline at end of file +SoyUdgError | @carlosnunezmx/aru

    Type alias SoyUdgError

    SoyUdgError: {
        code: number;
        data: {
            error: string;
            tarjeta_informador: unknown[];
        };
    }

    Type declaration

    • code: number
    • data: {
          error: string;
          tarjeta_informador: unknown[];
      }
      • error: string
      • tarjeta_informador: unknown[]
    \ No newline at end of file diff --git a/docs/typedoc/types/StudentInfoType.html b/docs/typedoc/types/StudentInfoType.html index 65643df..d460f4b 100644 --- a/docs/typedoc/types/StudentInfoType.html +++ b/docs/typedoc/types/StudentInfoType.html @@ -1,3 +1,3 @@ StudentInfoType | @carlosnunezmx/aru

    Type alias StudentInfoType

    StudentInfoType: {
        alumcodigo: string;
        curp: string;
        desctiposangr: string | null;
        domicilio: string;
        email: string;
        fechnacimient: string;
        firma: string;
        foto: string;
        genero: "M" | "F";
        imss: string;
        lugadomicilio: DomicilioFormated;
        lugadomicilioDB: string;
        nombre: string;
        rfc: string | null;
        teleemergenci: string;
        tiposangre: string | null;
    }

    Type declaration

    • alumcodigo: string
    • curp: string
    • desctiposangr: string | null
    • domicilio: string
    • email: string
    • fechnacimient: string
    • firma: string

      Firma del alumno codificada en Base64

    • foto: string

      Foto del alumno codificada en Base64

      -
    • genero: "M" | "F"
    • imss: string
    • lugadomicilio: DomicilioFormated
    • lugadomicilioDB: string
    • nombre: string
    • rfc: string | null
    • teleemergenci: string
    • tiposangre: string | null
    \ No newline at end of file +
  • genero: "M" | "F"
  • imss: string
  • lugadomicilio: DomicilioFormated
  • lugadomicilioDB: string
  • nombre: string
  • rfc: string | null
  • teleemergenci: string
  • tiposangre: string | null
  • \ No newline at end of file diff --git a/docs/typedoc/types/UnauthorizedType.html b/docs/typedoc/types/UnauthorizedType.html index e62d389..be59d87 100644 --- a/docs/typedoc/types/UnauthorizedType.html +++ b/docs/typedoc/types/UnauthorizedType.html @@ -1,3 +1,3 @@ UnauthorizedType | @carlosnunezmx/aru

    Type alias UnauthorizedType

    UnauthorizedType: {
        codigo: 401;
        mensaje: string;
        respuesta: false;
    }

    Error code 405

    Type declaration

    • codigo: 401
    • mensaje: string
    • respuesta: false

    Description

    The authentication token or authentication headers

    -
    \ No newline at end of file +
    \ No newline at end of file diff --git a/docs/typedoc/types/UserCredentials.html b/docs/typedoc/types/UserCredentials.html index 1b73607..09453e9 100644 --- a/docs/typedoc/types/UserCredentials.html +++ b/docs/typedoc/types/UserCredentials.html @@ -1,2 +1,2 @@ UserCredentials | @carlosnunezmx/aru

    Type alias UserCredentials

    UserCredentials: {
        Password: string;
        User: string;
    }

    User credentials for login into Leo

    -

    Type declaration

    • Password: string
    • User: string
    \ No newline at end of file +

    Type declaration

    \ No newline at end of file diff --git a/source/auth/Cache.ts b/source/auth/Cache.ts index c4ca31e..e2fb12b 100644 --- a/source/auth/Cache.ts +++ b/source/auth/Cache.ts @@ -25,8 +25,4 @@ export class Cache{ clearCache(student: string){ this._Cache.delete(student); } - - getPlanfromCache(student: string): Plans | undefined{ - return this.getCache(StudentPlans as typeof AuthMethod, student); - } } \ No newline at end of file diff --git a/source/auth/Login.ts b/source/auth/Login.ts index c3fd22d..c5c3b77 100644 --- a/source/auth/Login.ts +++ b/source/auth/Login.ts @@ -1,11 +1,13 @@ import type { LoginResponseType } from "./Login.response.js"; -import { Method } from "../utils/Method.js"; +import { AuthMethod, Method } from "../utils/Method.js"; import { HeaderPreset } from "../utils/CommonHeaders.js"; import { ErrorHandling } from "../error/Request.js"; import { encryptPassword } from "../utils/crypto/Password.js"; import { Cache } from "./Cache.js"; +import type { Plans } from "../info/PlansType.js"; +import { StudentPlans } from "../info/Plans.js"; type TokenType = { token: string | null; @@ -59,6 +61,17 @@ export class Login extends Method { * Execute the login method, it's required for most of the methods. * This will load the token and the student code on the class */ + + + getPlanfromCache(student: string): Plans | undefined { + if(this.Cache){ + const cache = this.Cache.getCache(StudentPlans as typeof AuthMethod, student) + return Array.isArray(cache) ? cache : []; + } + + return []; + } + async exec(): Promise{ super.exec(); diff --git a/source/info/Plans.ts b/source/info/Plans.ts index c2e5ac4..fab9c9e 100644 --- a/source/info/Plans.ts +++ b/source/info/Plans.ts @@ -17,6 +17,11 @@ export class StudentPlans extends AuthMethod{ async exec() { await super.exec() + const cache = this.getCache(StudentPlans as typeof AuthMethod); + + if(cache) + return cache + const url = this.Route.replace(":studentCode", this.Auth.StudentCode!); const req = await fetch(url, { @@ -29,6 +34,7 @@ export class StudentPlans extends AuthMethod{ const data = await req.json() as DirtyPlans; + this.UpdateCache.bind(this)(data.respuesta, StudentPlans as typeof AuthMethod) return data.respuesta; } diff --git a/source/student/AverageAdvance/AvAdvance.ts b/source/student/AverageAdvance/AvAdvance.ts index 41d598c..4c2d373 100644 --- a/source/student/AverageAdvance/AvAdvance.ts +++ b/source/student/AverageAdvance/AvAdvance.ts @@ -30,7 +30,10 @@ export class AverageAdvance extends AuthMethod{ } async exec() { - const {idprograma, cicladmision} = this.props || (await new StudentPlans(this.Auth).exec())[0]; + const cache = this.getCache(AverageAdvance as typeof AuthMethod); + if(cache) + return cache; + const {idprograma, cicladmision} = this.props || this.Auth.getPlanfromCache(this.Auth.StudentCode!)![0] || (await new StudentPlans(this.Auth).exec())[0]; await super.exec() const req_url = this.Route.replace(':studentCode', this.Auth.StudentCode!) .replace(':programID', idprograma) @@ -40,6 +43,7 @@ export class AverageAdvance extends AuthMethod{ if(!req.ok) ErrorHandling(req); const data = await req.json() as DirtyAvAdvance; + this.UpdateCache(data.respuesta, AverageAdvance as typeof AuthMethod); return data.respuesta; } -} \ No newline at end of file +} diff --git a/source/student/Boletas/BoletaInfo.d.ts b/source/student/Boletas/BoletaInfo.d.ts new file mode 100644 index 0000000..b6f0cc9 --- /dev/null +++ b/source/student/Boletas/BoletaInfo.d.ts @@ -0,0 +1,12 @@ +export type BoletaType = { + caliextraordi: null | string; + caliextrletra: null | string; + caliextrrolad: "NO" | "SI"; + caliordiletra: null | string; + caliordinario: null | string; + caliordirolad: "NO" | "SI"; + crn: string; + idciclo: string; + idcurso: string; + nombcurso: string; +}[] \ No newline at end of file diff --git a/source/student/Boletas/Boletas.ts b/source/student/Boletas/Boletas.ts new file mode 100644 index 0000000..229a0fc --- /dev/null +++ b/source/student/Boletas/Boletas.ts @@ -0,0 +1,43 @@ +import type { Login } from "../../auth/Login.js"; +import { ErrorHandling } from "../../error/Request.js"; +import { StudentPlans } from "../../info/Plans.js"; +import { type Plans } from "../../info/PlansType.js"; +import { AuthHeaderPreset } from "../../utils/CommonHeaders.js"; +import { AuthMethod } from "../../utils/Method.js"; +import type { DirtyType } from "../../utils/generics/ResponseOK.js"; +import type { BoletaType } from "./BoletaInfo.js"; +export type BoletaInit = { + idprograma: string; + ciclefectivo: string; +} +export class Boleta extends AuthMethod { + protected Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:student code/:programID/:ciclo/boletas"; + + constructor(Auth: Login, init?: BoletaInit){ + super(Auth, init); + } + + async exec() { + await super.exec(); + const Plans = new StudentPlans(this.Auth); + const cache = this.getCache(Boleta as typeof AuthMethod); + if(cache) + return cache; + const {ciclefectivo, idprograma} = this.Props || this.Auth.getPlanfromCache(this.Auth.StudentCode!)![0] || (await Plans.exec())[0]; + + const url = this.Route.replace(":student code", this.Auth.StudentCode!) + .replace(":programID", idprograma) + .replace(":ciclo", ciclefectivo); + + const req = await fetch(url, { + headers: AuthHeaderPreset(this.AuthToken, this.Auth.getToken().token!) + }); + + if(!req.ok) + ErrorHandling(req); + + const data = await req.json() as DirtyType; + this.UpdateCache.bind(this)(data.respuesta, Boleta as typeof AuthMethod); + return data.respuesta; + } +} diff --git a/source/student/Card/StudentCard.ts b/source/student/Card/StudentCard.ts index db233e4..f2ddae6 100644 --- a/source/student/Card/StudentCard.ts +++ b/source/student/Card/StudentCard.ts @@ -8,7 +8,7 @@ import type { Login } from "../../auth/Login.js"; */ export class StudentCard extends AuthMethod { protected Route: string = "https://soyudg.udg.mx/alumnos/show?encryptedId=:studentCode"; - constructor(Auth: Login){ + constructor(Auth: Login) { super(Auth); } @@ -16,18 +16,23 @@ export class StudentCard extends AuthMethod { const format = `${this.Auth.StudentCode!}-${Math.floor(Date.now() / 1e3)}`; return btoa(btoa(format)); } - + async exec(): Promise { + if (this.Auth.Cache) { + const cache = this.Auth.Cache.getCache(StudentCard as typeof AuthMethod, this.Auth.StudentCode!); + if (cache) + return cache; + } await super.exec() const url = this.Route.replace(":studentCode", this.Encode()) const request = await fetch(url); const data = await request.json() as DirtyCard; - + if (data.data.error) throw new RequestError(request); - + this.UpdateCache.bind(this)(data.data, StudentCard as typeof AuthMethod); return data.data; } } diff --git a/source/student/Credits/Credits.ts b/source/student/Credits/Credits.ts index 0e8121f..78bbcbf 100644 --- a/source/student/Credits/Credits.ts +++ b/source/student/Credits/Credits.ts @@ -22,8 +22,13 @@ export class Credits extends AuthMethod{ protected Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:studentCode/:programID/:initialAcademicTerm/creditos"; async exec() { await super.exec(); + if(this.Auth.Cache){ + const cache = this.getCache(Credits as typeof AuthMethod); + if(cache) + return cache; + } const plans = new StudentPlans(this.Auth); - const { cicladmision, idprograma } = this.props || (await plans.exec())[0]; + const { cicladmision, idprograma } = this.props || this.Auth.getPlanfromCache(this.Auth.StudentCode!)![0] || (await plans.exec())[0]; const req_url = this.Route.replace(':studentCode', this.Auth.StudentCode!) .replace(":programID", idprograma) @@ -37,6 +42,7 @@ export class Credits extends AuthMethod{ ErrorHandling(req); const data = await req.json() as DirtyType; + this.UpdateCache.bind(this)(data.respuesta, Credits as typeof AuthMethod) return data.respuesta; } } \ No newline at end of file diff --git a/source/student/Projections/Projections.ts b/source/student/Projections/Projections.ts index 79a1509..bf844cc 100644 --- a/source/student/Projections/Projections.ts +++ b/source/student/Projections/Projections.ts @@ -15,19 +15,22 @@ export type ProjectionInit = { /** * Get the student projection, this contains the pending subjects to take */ -export class Projections extends AuthMethod{ +export class Projections extends AuthMethod{ protected Route: string = "https://micro-leo.udg.mx/esc-alumnos/v1/:id-alumno/:id-programa/:id-ciclo-admision/proyecciones"; - private props?: ProjectionInit; constructor(Auth: Login, init?: ProjectionInit){ - super(Auth); + super(Auth, init); } async exec(){ await super.exec() - + if(this.Auth.Cache){ + const cache = this.getCache(Projections as typeof AuthMethod); + if(cache) + return cache; + } // Get the student plans to read the program and admission cycle const plans = new StudentPlans(this.Auth); - const { idprograma, cicladmision } = this.props || (await plans.exec())[0]; + const { idprograma, cicladmision } = this.Props || this.Auth.getPlanfromCache(this.Auth.StudentCode!)![0] || (await plans.exec())[0]; const req_url = this.Route.replace(':id-alumno', this.Auth.StudentCode!) .replace(':id-programa', idprograma) @@ -41,6 +44,7 @@ export class Projections extends AuthMethod{ ErrorHandling(req); const data = await req.json() as DirtyProjection; + this.UpdateCache.bind(this)(data.respuesta, Projections as typeof AuthMethod); return data.respuesta; } } diff --git a/source/student/RegistroMaterias/EliminarMateria.ts b/source/student/RegistroMaterias/EliminarMateria.ts index 14097b8..ef2476b 100644 --- a/source/student/RegistroMaterias/EliminarMateria.ts +++ b/source/student/RegistroMaterias/EliminarMateria.ts @@ -8,12 +8,10 @@ import { StudentPlans } from "../../info/Plans.js"; /** * Delete a subject from the student's schedule by NRC */ -export class EliminarMateria extends AuthMethod{ +export class EliminarMateria extends AuthMethod{ protected Route: string = "https://micro-leo.udg.mx/esc-registro/v1/cursos"; - private Props: RegistrarMateriaInit; constructor(Auth: Login, init: RegistrarMateriaInit){ - super(Auth); - this.Props = init; + super(Auth, init); } @@ -22,23 +20,24 @@ export class EliminarMateria extends AuthMethod{ */ async exec(){ await super.exec(); + const cache = this.Auth.getPlanfromCache(this.Auth.StudentCode!); const plans = new StudentPlans(this.Auth); - if(this.Props.idcentro || this.Props.idprograma || this.Props.nivel){ + if(this.Props!.idcentro || this.Props!.idprograma || this.Props!.nivel){ const res = await plans.exec(); - this.Props.idcentro = res[0].idcentro; - this.Props.idprograma = res[0].idprograma; - this.Props.nivel = res[0].nivel; + this.Props!.idcentro = cache![0].idcentro|| res[0].idcentro; + this.Props!.idprograma = cache![0].idprograma|| res[0].idprograma; + this.Props!.nivel = cache![0].nivel || res[0].nivel; } const request = await fetch(this.Route, { method: "DELETE", headers: AuthHeaderPreset(this.AuthToken, this.Auth.getToken().token!), body: JSON.stringify({ idalumno: this.Auth.StudentCode!, - idprograma: this.Props.idprograma, - nivel: this.Props.nivel, - idciclo: this.Props.ciclo, - idcentro: this.Props.idcentro, - cursos: this.Props.cursos + idprograma: this.Props!.idprograma, + nivel: this.Props!.nivel, + idciclo: this.Props!.ciclo, + idcentro: this.Props!.idcentro, + cursos: this.Props!.cursos }) }) diff --git a/source/student/RegistroMaterias/RegistrarMateria.ts b/source/student/RegistroMaterias/RegistrarMateria.ts index d4563e6..f3085ed 100644 --- a/source/student/RegistroMaterias/RegistrarMateria.ts +++ b/source/student/RegistroMaterias/RegistrarMateria.ts @@ -20,35 +20,35 @@ export type MateriaRegistrada = string[] /** * Add a subject from the student's schedule by NRC */ -export class RegistrarMateria extends AuthMethod { - Props: RegistrarMateriaInit; +export class RegistrarMateria extends AuthMethod { protected Route: string = "https://micro-leo.udg.mx/esc-registro/v1/"; constructor(Auth: Login, init: RegistrarMateriaInit){ - super(Auth); - this.Props = init; + super(Auth, init); + } /** * @todo Revisar que el tipo de dato de respuesta sea el adecuado. */ async exec(){ await super.exec(); + const cache = this.Auth.getPlanfromCache(this.Auth.StudentCode!); const plans = new StudentPlans(this.Auth); - if(this.Props.idcentro || this.Props.idprograma || this.Props.nivel){ + if(this.Props!.idcentro || this.Props!.idprograma || this.Props!.nivel){ const res = await plans.exec(); - this.Props.idcentro = res[0].idcentro; - this.Props.idprograma = res[0].idprograma; - this.Props.nivel = res[0].nivel; + this.Props!.idcentro = cache![0].idcentro|| res[0].idcentro; + this.Props!.idprograma = cache![0].idprograma|| res[0].idprograma; + this.Props!.nivel = cache![0].nivel || res[0].nivel; } const request = await fetch(this.Route, { method: "POST", headers: AuthHeaderPreset(this.AuthToken, this.Auth.getToken().token!), body: JSON.stringify({ idalumno: this.Auth.StudentCode!, - idprograma: this.Props.idprograma, - nivel: this.Props.nivel, - idciclo: this.Props.ciclo, - idcentro: this.Props.idcentro, - cursos: this.Props.cursos + idprograma: this.Props!.idprograma, + nivel: this.Props!.nivel, + idciclo: this.Props!.ciclo, + idcentro: this.Props!.idcentro, + cursos: this.Props!.cursos }) }) diff --git a/source/student/Schedules/Schedule.ts b/source/student/Schedules/Schedule.ts index db0fdb5..7945f35 100644 --- a/source/student/Schedules/Schedule.ts +++ b/source/student/Schedules/Schedule.ts @@ -1,5 +1,6 @@ import type { Login } from "../../auth/Login.js"; import type { DirtySchedule, Materia } from "./ScheduleTypes.js"; +import type { Plans } from "../../info/PlansType.js"; import { AuthHeaderPreset } from "../../utils/CommonHeaders.js"; import { AuthMethod } from "../../utils/Method.js"; @@ -25,7 +26,13 @@ export class Schedule extends AuthMethod{ async exec(){ await super.exec() - const idprograma = this.props.idprograma || (await new StudentPlans(this.Auth).exec())[0].idprograma; + if(this.Auth.Cache && !this.ShouldUpCache){ + const cache = this.getCache(Schedule as typeof AuthMethod); + if(cache) + return cache; + } + + const idprograma = this.props.idprograma || this.getCache(StudentPlans as typeof AuthMethod)![0].idprograma || (await new StudentPlans(this.Auth).exec())[0].idprograma; const req_url = this.Route.replace(':studentCode', this.Auth.StudentCode!) .replace(':programID', idprograma) .replace(':academicTerm', this.props.ciclo); @@ -36,8 +43,8 @@ export class Schedule extends AuthMethod{ if(!req.ok) ErrorHandling(req); - const data = await req.json() as DirtySchedule; + this.UpdateCache.bind(this)(data.respuesta, Schedule as typeof AuthMethod); return data.respuesta; } diff --git a/source/student/StudentInfo/StudentInfo.ts b/source/student/StudentInfo/StudentInfo.ts index 325c8fa..4d2ba37 100644 --- a/source/student/StudentInfo/StudentInfo.ts +++ b/source/student/StudentInfo/StudentInfo.ts @@ -16,6 +16,10 @@ export class StudentInfo extends AuthMethod{ protected Route: string = "https://micro-leo.udg.mx/sii-alumnos/v1/:studentCode/datos-personales"; async exec() { + const cache = this.getCache(StudentInfo as typeof AuthMethod); + if(cache) + return cache; + await super.exec(); const url = new URL(this.Route.replace(":studentCode", this.Auth.StudentCode as string)) const req = await fetch(url.toString(), { @@ -26,6 +30,7 @@ export class StudentInfo extends AuthMethod{ ErrorHandling(req); const data = await req.json() as DirtyStudentInfoType; + this.UpdateCache.bind(this)(data.respuesta, StudentInfo as typeof AuthMethod) return data.respuesta; } } \ No newline at end of file diff --git a/source/utils/Method.ts b/source/utils/Method.ts index 2981dbd..76034ef 100644 --- a/source/utils/Method.ts +++ b/source/utils/Method.ts @@ -33,12 +33,14 @@ export class Method{ /** * Use this class to create a new method that requires a login, it contains the AuthToken and Token, remember to call the exec method before using the AuthToken by super.exec() */ -export abstract class AuthMethod extends Method { +export abstract class AuthMethod extends Method { declare protected Auth: Login; ShouldUpCache: boolean = true; - constructor(Auth: Login){ + protected Props?: initType; + constructor(Auth: Login, init?: initType){ super(); this.Auth = Auth; + this.Props = init; } // @ts-ignore @@ -46,14 +48,20 @@ export abstract class AuthMethod extends Method { super.exec(); if(!this.Auth.checkVigencia()){ await this.Auth.exec.bind(this.Auth)(); + this.ShouldUpCache = true; } } + UpdateCache(data: T, c: typeof AuthMethod): void{ - if(this.ShouldUpCache) + if(!this.ShouldUpCache) return; - if(this.Auth.Cache) + if(this.Auth.Cache){ + console.log("Setting cache"); + this.Auth.Cache.setCache(this.Auth.StudentCode!, c, data); + } + this.ShouldUpCache = true; } diff --git a/source/utils/useCache.ts b/source/utils/useCache.ts new file mode 100644 index 0000000..ff3232f --- /dev/null +++ b/source/utils/useCache.ts @@ -0,0 +1,2 @@ +import { Method } from "../index.js"; +import { AuthMethod } from "./Method.js"; \ No newline at end of file diff --git a/test/common.ts b/test/common.ts index ad0cc6e..95ddc42 100644 --- a/test/common.ts +++ b/test/common.ts @@ -7,6 +7,6 @@ if(!process.env.LEO_USER || !process.env.LEO_PASSWORD) { const session = new Login({ User: process.env.LEO_USER, Password: process.env.LEO_PASSWORD -}) +}, {createCache: true}) export default session; \ No newline at end of file diff --git a/test/playground.ts b/test/playground.ts index d3e90f3..b3e3c20 100644 --- a/test/playground.ts +++ b/test/playground.ts @@ -6,17 +6,19 @@ const Creds: UserCredentials = { User: process.env.LEO_USER } -const session = new Login(Creds); +const session = new Login(Creds, {createCache: true}); await session.exec(); -// const projection = new Projections(session); -// const studentProjection = await projection.exec(); -// console.log(studentProjection); +const projection = new Projections(session); +const studentProjection = await projection.exec(); -// const credits = new Credits(session); -// await credits.exec(); +const credits = new Credits(session); +await credits.exec(); const plans = new StudentPlans(session); const studentPlan = await plans.exec(); -console.log(studentPlan); + + + +console.log(session.Cache); \ No newline at end of file diff --git a/types/auth/Cache.d.ts b/types/auth/Cache.d.ts new file mode 100644 index 0000000..0e215d6 --- /dev/null +++ b/types/auth/Cache.d.ts @@ -0,0 +1,8 @@ +import type { AuthMethod, Method } from "../utils/Method.js"; +export declare class Cache { + private _Cache; + lastUpdate: Date; + getCache(c: typeof AuthMethod | typeof Method, studentCode: string): R; + setCache(student: string, c: typeof AuthMethod | typeof Method, value: I): void; + clearCache(student: string): void; +} diff --git a/types/auth/Login.d.ts b/types/auth/Login.d.ts index 9c45e0b..dacc29b 100644 --- a/types/auth/Login.d.ts +++ b/types/auth/Login.d.ts @@ -1,4 +1,6 @@ import { Method } from "../utils/Method.js"; +import { Cache } from "./Cache.js"; +import type { Plans } from "../info/PlansType.js"; type TokenType = { token: string | null; vigencia: Date | null; @@ -29,11 +31,13 @@ export declare class Login extends Method { protected Route: string; StudentCode?: string; private options?; + Cache?: Cache; constructor(credentials: credentials, options?: Partial); /** * Execute the login method, it's required for most of the methods. * This will load the token and the student code on the class */ + getPlanfromCache(student: string): Plans | undefined; exec(): Promise; /** Get the token and its vigency */ getToken(): Required; diff --git a/types/student/Boletas/Boletas.d.ts b/types/student/Boletas/Boletas.d.ts new file mode 100644 index 0000000..b49c63c --- /dev/null +++ b/types/student/Boletas/Boletas.d.ts @@ -0,0 +1,12 @@ +import type { Login } from "../../auth/Login.js"; +import { AuthMethod } from "../../utils/Method.js"; +import type { BoletaType } from "./BoletaInfo.js"; +export type BoletaInit = { + idprograma: string; + ciclefectivo: string; +}; +export declare class Boleta extends AuthMethod { + protected Route: string; + constructor(Auth: Login, init?: BoletaInit); + exec(): Promise; +} diff --git a/types/student/Projections/Projections.d.ts b/types/student/Projections/Projections.d.ts index 09ff55f..6bdf952 100644 --- a/types/student/Projections/Projections.d.ts +++ b/types/student/Projections/Projections.d.ts @@ -9,9 +9,8 @@ export type ProjectionInit = { /** * Get the student projection, this contains the pending subjects to take */ -export declare class Projections extends AuthMethod { +export declare class Projections extends AuthMethod { protected Route: string; - private props?; constructor(Auth: Login, init?: ProjectionInit); exec(): Promise; } diff --git a/types/student/RegistroMaterias/EliminarMateria.d.ts b/types/student/RegistroMaterias/EliminarMateria.d.ts index 728c26f..b7e9053 100644 --- a/types/student/RegistroMaterias/EliminarMateria.d.ts +++ b/types/student/RegistroMaterias/EliminarMateria.d.ts @@ -4,9 +4,8 @@ import { AuthMethod } from "../../utils/Method.js"; /** * Delete a subject from the student's schedule by NRC */ -export declare class EliminarMateria extends AuthMethod { +export declare class EliminarMateria extends AuthMethod { protected Route: string; - private Props; constructor(Auth: Login, init: RegistrarMateriaInit); /** * @todo Revisar que el tipo de dato de respuesta sea el adecuado. diff --git a/types/student/RegistroMaterias/RegistrarMateria.d.ts b/types/student/RegistroMaterias/RegistrarMateria.d.ts index d071398..063b988 100644 --- a/types/student/RegistroMaterias/RegistrarMateria.d.ts +++ b/types/student/RegistroMaterias/RegistrarMateria.d.ts @@ -15,8 +15,7 @@ export type MateriaRegistrada = string[]; /** * Add a subject from the student's schedule by NRC */ -export declare class RegistrarMateria extends AuthMethod { - Props: RegistrarMateriaInit; +export declare class RegistrarMateria extends AuthMethod { protected Route: string; constructor(Auth: Login, init: RegistrarMateriaInit); /** diff --git a/types/utils/Method.d.ts b/types/utils/Method.d.ts index c186e22..c6cc423 100644 --- a/types/utils/Method.d.ts +++ b/types/utils/Method.d.ts @@ -17,8 +17,12 @@ export declare class Method { /** * Use this class to create a new method that requires a login, it contains the AuthToken and Token, remember to call the exec method before using the AuthToken by super.exec() */ -export declare abstract class AuthMethod extends Method { +export declare abstract class AuthMethod extends Method { protected Auth: Login; - constructor(Auth: Login); + ShouldUpCache: boolean; + protected Props?: initType; + constructor(Auth: Login, init?: initType); exec(): Promise; + UpdateCache(data: T, c: typeof AuthMethod): void; + getCache(c: typeof AuthMethod): R | undefined; } diff --git a/types/utils/crypto/WebBcrypt.d.ts b/types/utils/crypto/WebBcrypt.d.ts new file mode 100644 index 0000000..08c0395 --- /dev/null +++ b/types/utils/crypto/WebBcrypt.d.ts @@ -0,0 +1 @@ +export declare function WebCrypt(pwd: string): string; diff --git a/types/utils/useCache.d.ts b/types/utils/useCache.d.ts new file mode 100644 index 0000000..cb0ff5c --- /dev/null +++ b/types/utils/useCache.d.ts @@ -0,0 +1 @@ +export {};