npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2026 – Pkg Stats / Ryan Hefner

aurion-sdk

v1.1.1

Published

SDK TypeScript pour s’authentifier auprès d’Aurion et extraire les notes, événements de planning et absences via une API typée.

Readme

aurion-sdk

SDK TypeScript pour s’authentifier auprès d’Aurion et extraire les notes, événements de planning et absences via une API typée.

Explication

aurion-sdk encapsule l’interface web Aurion derrière un client orienté session. Vous créez une instance de AurionSession, le SDK s’authentifie de manière paresseuse lors du premier accès réel aux données, navigue dans les pages JSF nécessaires à Aurion, analyse les charges utiles retournées, puis renvoie des objets JavaScript normalisés.

Le SDK est structuré en trois couches principales :

flowchart LR
    A[Votre application] --> B[AurionSession]
    B --> C[AurionTransport]
    B --> D[Cache de valeurs de session]
    C --> E[Cache de transport]
    B --> F[Parseurs et normalisation]
    C --> G[Application web Aurion]
    G --> C
    F --> B
  • AurionSession est le point d’entrée public principal.
  • AurionTransport gère l’authentification, les cookies, les redirections et les requêtes HTTP.
  • Les modules de parsers/* convertissent les charges utiles HTML et JSON d’Aurion en valeurs SDK typées.
  • La couche de cache peut réutiliser à la fois les réponses de transport et les valeurs métier déjà normalisées.

Flux de requête

sequenceDiagram
    participant App as Application
    participant Session as AurionSession
    participant Cache as Stockage de cache
    participant Transport as AurionTransport
    participant Aurion as Aurion
    participant Parser as Parseur

    App->>Session: getGrades() / getPlanning() / getAbsences()
    Session->>Cache: lecture du cache de session
    alt cache disponible
        Cache-->>Session: valeur normalisée
        Session-->>App: résultat typé
    else cache absent
        Session->>Transport: login() si nécessaire
        Transport->>Aurion: authentification + navigation
        Aurion-->>Transport: réponses HTML / JSON
        Transport-->>Session: réponses brutes
        Session->>Parser: extraction et normalisation
        Parser-->>Session: valeur typée
        Session->>Cache: écriture de la valeur normalisée
        Session-->>App: résultat typé
    end

Guides pratiques

Comment installer le SDK

npm install aurion-sdk

Le SDK utilise l’API Fetch. Si votre runtime n’expose pas de fetch global, fournissez-en une via fetchFn lors de la création de la session.

Comment récupérer les notes

import { AurionSession } from "aurion-sdk";

const session = new AurionSession({
	username: process.env.AURION_USERNAME!,
	password: process.env.AURION_PASSWORD!,
});

const grades = await session.getGrades();

for (const grade of grades) {
	console.log({
		date: grade.date,
		code: grade.code,
		name: grade.name,
		grade: grade.grade,
		average: grade.average,
	});
}

Comment récupérer les événements du planning

getPlanning() accepte une fenêtre temporelle optionnelle. Si vous l’omettez, le SDK utilise une fenêtre par défaut qui commence 7 jours avant l’appel et se termine 60 jours après ce point de départ.

import { AurionSession } from "aurion-sdk";

const session = new AurionSession({
	username: process.env.AURION_USERNAME!,
	password: process.env.AURION_PASSWORD!,
});

const planning = await session.getPlanning({
	start: new Date("2026-04-01T00:00:00.000Z"),
	end: new Date("2026-04-30T23:59:59.999Z"),
});

for (const event of planning) {
	console.log(event.title, event.start, event.end, event.type);
}

Comment récupérer les absences

import { AurionSession } from "aurion-sdk";

const session = new AurionSession({
	username: process.env.AURION_USERNAME!,
	password: process.env.AURION_PASSWORD!,
});

const absences = await session.getAbsences();

for (const absence of absences) {
	console.log(absence.date, absence.type, absence.duration);
}

Comment activer le cache intégré

Définissez cache: true pour utiliser le cache en mémoire fourni par le SDK.

import { AurionSession } from "aurion-sdk";

const session = new AurionSession({
	username: process.env.AURION_USERNAME!,
	password: process.env.AURION_PASSWORD!,
	cache: true,
});

Comment utiliser un stockage de cache personnalisé et des TTL

import { AurionSession, InMemoryAurionCache } from "aurion-sdk";

const cacheStore = new InMemoryAurionCache();

const session = new AurionSession({
	username: process.env.AURION_USERNAME!,
	password: process.env.AURION_PASSWORD!,
	cache: {
		store: cacheStore,
		maxAgeMs: 5 * 60 * 1000,
		sessionMaxAgeMs: 60 * 1000,
		transportMaxAgeMs: 5 * 60 * 1000,
	},
});

Les clés de cache incluent à la fois baseUrl et username, ce qui évite les collisions entre plusieurs instances Aurion ou plusieurs comptes partageant le même stockage.

Comment gérer les erreurs du SDK

import { AurionSession, isAurionError } from "aurion-sdk";

const session = new AurionSession({
	username: process.env.AURION_USERNAME!,
	password: process.env.AURION_PASSWORD!,
});

try {
	const grades = await session.getGrades();
	console.log(grades.length);
} catch (error: unknown) {
	if (isAurionError(error)) {
		console.error(error.code, error.message, error.details);
	} else {
		console.error("Erreur inattendue", error);
	}
}

Référence

Exports principaux

| Export | Type | Rôle | | --------------------------------------------------------------------------- | --------- | ------------------------------------------------------------------------- | | AurionSession | classe | Client SDK de haut niveau pour les notes, le planning et les absences | | isAurionError | fonction | Garde de type pour les erreurs structurées du SDK | | InMemoryAurionCache | classe | Stockage de cache mémoire intégré | | resolveAurionCacheConfig | fonction | Normalise la configuration publique du cache | | resolveAurionCacheStore | fonction | Résout un stockage de cache concret à partir des options publiques | | createAurionCacheKey | fonction | Construit les clés de cache du transport | | createAurionValueCacheKey | fonction | Construit les clés de cache des valeurs de session | | isAurionCacheEntryExpired | fonction | Vérifie l’expiration TTL des entrées de cache | | parseGrades, parsePlanningEvents, parseAbsences | fonctions | Parseurs bas niveau pour les charges utiles Aurion brutes | | toAurionGrade, toAurionAbsence | fonctions | Convertissent des lignes brutes parsées en objets SDK normalisés | | parseAurionPlanningTitle, parseLocationToAddress, parseGradeToDetails | fonctions | Utilitaires de plus haut niveau pour le post-traitement côté consommateur |

AurionSession

new AurionSession(options: AurionSessionOptions)

Champs de AurionSessionOptions :

| Champ | Type | Description | | ---------- | --------------------------------------------------- | --------------------------------------------------------------------------- | | username | string | Identifiant de connexion Aurion | | password | string | Mot de passe Aurion | | fetchFn | typeof fetch | Implémentation personnalisée optionnelle de fetch | | cache | boolean \| AurionCacheStore \| AurionCacheOptions | Configuration du cache | | baseUrl | string | URL optionnelle de l’instance Aurion, par défaut https://aurion.junia.com |

Méthodes principales :

| Méthode | Retour | Notes | | ----------------------- | -------------------------------- | ------------------------------------------------------------------------- | | getGrades() | Promise<AurionGrade[]> | Authentifie à la demande, navigue vers les notes et parse le tableau HTML | | getPlanning(options?) | Promise<AurionPlanningEvent[]> | Charge les événements de planning sur une fenêtre fournie ou par défaut | | getAbsences() | Promise<AurionAbsence[]> | Navigue vers les absences et renvoie des enregistrements normalisés |

Formes de données

AurionGrade

interface AurionGrade {
	date: Date;
	code: string;
	name: string;
	grade: number | null;
	coefficient: number | null;
	average: number | null;
	min: number | null;
	max: number | null;
	median: number | null;
	standardDeviation: number | null;
	comment: string | null;
}

AurionPlanningEvent

interface AurionPlanningEvent {
	id: string;
	title: string;
	start: Date;
	end: Date;
	allDay: boolean;
	editable: boolean;
	type: string;
}

AurionAbsence

interface AurionAbsence {
	date: Date;
	type: string;
	duration: string;
	time: Date;
	class: string;
	teacher: string;
}

Codes d’erreur

Le SDK expose des erreurs structurées avec les codes normalisés suivants :

  • AURION_AUTHENTICATION_ERROR
  • AURION_NAVIGATION_ERROR
  • AURION_PARSING_ERROR
  • AURION_TRANSPORT_ERROR
  • AURION_UNKNOWN_ERROR
  • AURION_NOT_IMPLEMENTED

Notes

  • Le point d’entrée publié du package est src/index.ts, compilé dans dist/.
  • dist/ est une sortie générée et ne doit pas être modifié manuellement.