turboself-api 0.1.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.
@@ -0,0 +1,173 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.Turboself = void 0;
4
+ const tslib_1 = require("tslib");
5
+ const RESTManager_1 = require("../rest/RESTManager");
6
+ const endpoints = tslib_1.__importStar(require("../rest/endpoints"));
7
+ const User_1 = require("../routes/User");
8
+ const School_1 = require("../routes/School");
9
+ class Turboself {
10
+ #manager;
11
+ #user;
12
+ #school;
13
+ constructor(mail, password, token, hoteId, userId) {
14
+ this.#manager = new RESTManager_1.RESTManager();
15
+ this.#user = new User_1.User();
16
+ this.#school = new School_1.School();
17
+ this.mail = mail;
18
+ this.password = password;
19
+ this.token = token;
20
+ this.token_expire = Date.now() + 3600000;
21
+ this.hoteId = hoteId;
22
+ this.userId = userId;
23
+ }
24
+ async isExpire() {
25
+ return Date.now() > this.token_expire;
26
+ }
27
+ async refreshToken() {
28
+ this.#manager.makeAuthRequest({
29
+ method: "POST",
30
+ url: endpoints.LOGIN(),
31
+ data: {
32
+ username: this.mail,
33
+ password: this.password
34
+ }
35
+ }).then((data) => {
36
+ this.token = data.access_token;
37
+ });
38
+ }
39
+ async getUser() {
40
+ if (await this.isExpire()) {
41
+ if (this.mail && this.password) {
42
+ await this.refreshToken();
43
+ }
44
+ else {
45
+ throw new Error("Token Expired");
46
+ }
47
+ }
48
+ return this.#user.getUser(this.hoteId, this.token);
49
+ }
50
+ async getHistory() {
51
+ if (await this.isExpire()) {
52
+ if (this.mail && this.password) {
53
+ await this.refreshToken();
54
+ }
55
+ else {
56
+ throw new Error("Token Expired");
57
+ }
58
+ }
59
+ return this.#user.getHistory(this.hoteId, this.token);
60
+ }
61
+ async getLastPayment() {
62
+ if (await this.isExpire()) {
63
+ if (this.mail && this.password) {
64
+ await this.refreshToken();
65
+ }
66
+ else {
67
+ throw new Error("Token Expired");
68
+ }
69
+ }
70
+ return this.#user.getLastPayment(this.hoteId, this.token);
71
+ }
72
+ async getSolds() {
73
+ if (await this.isExpire()) {
74
+ if (this.mail && this.password) {
75
+ await this.refreshToken();
76
+ }
77
+ else {
78
+ throw new Error("Token Expired");
79
+ }
80
+ }
81
+ return this.#user.getSolds(this.hoteId, this.token);
82
+ }
83
+ async getUserSchool() {
84
+ if (await this.isExpire()) {
85
+ if (this.mail && this.password) {
86
+ await this.refreshToken();
87
+ }
88
+ else {
89
+ throw new Error("Token Expired");
90
+ }
91
+ }
92
+ return this.#school.getUserSchool(this.hoteId, this.token);
93
+ }
94
+ async getSchool(etabId) {
95
+ if (await this.isExpire()) {
96
+ if (this.mail && this.password) {
97
+ await this.refreshToken();
98
+ }
99
+ else {
100
+ throw new Error("Token Expired");
101
+ }
102
+ }
103
+ return this.#school.getSchool(etabId);
104
+ }
105
+ async getCurrentBookingWeek() {
106
+ if (await this.isExpire()) {
107
+ if (this.mail && this.password) {
108
+ await this.refreshToken();
109
+ }
110
+ else {
111
+ throw new Error("Token Expired");
112
+ }
113
+ }
114
+ return this.#user.getCurrentBookingWeek(this.hoteId, this.token);
115
+ }
116
+ async getCurrentBookingWeekNumber() {
117
+ if (await this.isExpire()) {
118
+ if (this.mail && this.password) {
119
+ await this.refreshToken();
120
+ }
121
+ else {
122
+ throw new Error("Token Expired");
123
+ }
124
+ }
125
+ return this.#user.getCurrentBookingWeekNumber(this.hoteId, this.token);
126
+ }
127
+ async getBookings(week) {
128
+ if (await this.isExpire()) {
129
+ if (this.mail && this.password) {
130
+ await this.refreshToken();
131
+ }
132
+ else {
133
+ throw new Error("Token Expired");
134
+ }
135
+ }
136
+ return this.#user.getBookings(this.hoteId, this.token, week);
137
+ }
138
+ async getBooksWeeksAvailable() {
139
+ if (await this.isExpire()) {
140
+ if (this.mail && this.password) {
141
+ await this.refreshToken();
142
+ }
143
+ else {
144
+ throw new Error("Token Expired");
145
+ }
146
+ }
147
+ return this.#user.getBooksWeeksAvailable(this.hoteId, this.token);
148
+ }
149
+ async getEveningBookingState() {
150
+ if (await this.isExpire()) {
151
+ if (this.mail && this.password) {
152
+ await this.refreshToken();
153
+ }
154
+ else {
155
+ throw new Error("Token Expired");
156
+ }
157
+ }
158
+ return this.#user.getEveningBookingState(this.hoteId, this.token);
159
+ }
160
+ async bookDay(state, weekNumber, dayOfWeek, bookEvening) {
161
+ if (await this.isExpire()) {
162
+ if (this.mail && this.password) {
163
+ await this.refreshToken();
164
+ }
165
+ else {
166
+ throw new Error("Token Expired");
167
+ }
168
+ }
169
+ return this.#user.bookDay(this.hoteId, this.token, state, weekNumber, dayOfWeek, bookEvening);
170
+ }
171
+ }
172
+ exports.Turboself = Turboself;
173
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQ2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3N0cnVjdHVyZXMvQ2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxxREFBa0Q7QUFDbEQscUVBQStDO0FBRS9DLHlDQUFzQztBQUN0Qyw2Q0FBMEM7QUFFMUMsTUFBYSxTQUFTO0lBQ3BCLFFBQVEsQ0FBYztJQUN0QixLQUFLLENBQU87SUFDWixPQUFPLENBQVM7SUFPaEIsWUFBWSxJQUFtQixFQUFFLFFBQXVCLEVBQUUsS0FBYSxFQUFFLE1BQWMsRUFBRSxNQUFjO1FBQ3JHLElBQUksQ0FBQyxRQUFRLEdBQUcsSUFBSSx5QkFBVyxFQUFFLENBQUM7UUFDbEMsSUFBSSxDQUFDLEtBQUssR0FBRyxJQUFJLFdBQUksRUFBRSxDQUFDO1FBQ3hCLElBQUksQ0FBQyxPQUFPLEdBQUcsSUFBSSxlQUFNLEVBQUUsQ0FBQztRQUM1QixJQUFJLENBQUMsSUFBSSxHQUFHLElBQUksQ0FBQztRQUNqQixJQUFJLENBQUMsUUFBUSxHQUFHLFFBQVEsQ0FBQztRQUN6QixJQUFJLENBQUMsS0FBSyxHQUFHLEtBQUssQ0FBQztRQUNuQixJQUFJLENBQUMsWUFBWSxHQUFHLElBQUksQ0FBQyxHQUFHLEVBQUUsR0FBRyxPQUFPLENBQUM7UUFDekMsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7UUFDckIsSUFBSSxDQUFDLE1BQU0sR0FBRyxNQUFNLENBQUM7SUFDdkIsQ0FBQztJQUVPLEtBQUssQ0FBQyxRQUFRO1FBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsRUFBRSxHQUFHLElBQUksQ0FBQyxZQUFZLENBQUM7SUFDeEMsQ0FBQztJQUVPLEtBQUssQ0FBQyxZQUFZO1FBQ3hCLElBQUksQ0FBQyxRQUFRLENBQUMsZUFBZSxDQUFDO1lBQzVCLE1BQU0sRUFBRSxNQUFNO1lBQ2QsR0FBRyxFQUFFLFNBQVMsQ0FBQyxLQUFLLEVBQUU7WUFDdEIsSUFBSSxFQUFFO2dCQUNKLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSTtnQkFDbkIsUUFBUSxFQUFFLElBQUksQ0FBQyxRQUFRO2FBQ0Y7U0FDeEIsQ0FBQyxDQUFDLElBQUksQ0FBQyxDQUFDLElBQWEsRUFBRSxFQUFFO1lBQ3hCLElBQUksQ0FBQyxLQUFLLEdBQUksSUFBK0IsQ0FBQyxZQUFZLENBQUM7UUFDN0QsQ0FBQyxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRU0sS0FBSyxDQUFDLE9BQU87UUFDbEIsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUNyRCxDQUFDO0lBRU0sS0FBSyxDQUFDLFVBQVU7UUFDckIsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRU0sS0FBSyxDQUFDLGNBQWM7UUFDekIsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUM1RCxDQUFDO0lBRU0sS0FBSyxDQUFDLFFBQVE7UUFDbkIsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsTUFBTSxFQUFFLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQztJQUN0RCxDQUFDO0lBRU0sS0FBSyxDQUFDLGFBQWE7UUFDeEIsSUFBSSxNQUFNLElBQUksQ0FBQyxRQUFRLEVBQUUsRUFBRSxDQUFDO1lBQzFCLElBQUksSUFBSSxDQUFDLElBQUksSUFBSSxJQUFJLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQy9CLE1BQU0sSUFBSSxDQUFDLFlBQVksRUFBRSxDQUFDO1lBQzVCLENBQUM7aUJBQ0ksQ0FBQztnQkFDSixNQUFNLElBQUksS0FBSyxDQUFDLGVBQWUsQ0FBQyxDQUFDO1lBQ25DLENBQUM7UUFDSCxDQUFDO1FBRUQsT0FBTyxJ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
@@ -0,0 +1,24 @@
1
+ export interface balanceResponse {
2
+ /** ID of the balance */
3
+ id: number;
4
+ /** ID of the account */
5
+ compte: string | null;
6
+ appli: {
7
+ /** ID of the app */
8
+ id: number;
9
+ /** Original ID of the app */
10
+ idOrig: number;
11
+ /** Library used */
12
+ lib: string;
13
+ };
14
+ hote: {
15
+ /** ID of the hote */
16
+ id: number;
17
+ };
18
+ /** Amount of the balance in cents */
19
+ montant: number;
20
+ /** Estimated amount of the balance after pre-reservations */
21
+ montantEstime: number;
22
+ /** Displayed message on MyTurboself */
23
+ montantEstimeMsg: string;
24
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQmFsYW5jZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90eXBlcy9CYWxhbmNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,73 @@
1
+ import { userResponse } from "./User";
2
+ export interface bookingResponse {
3
+ rsvWebDto: Array<bookings>;
4
+ /** Number of weeks available */
5
+ numSemaines: Array<number>;
6
+ /** Is evening book are allowed */
7
+ isResaSoirActive: boolean;
8
+ /** Actual Week start in ISO-8601 */
9
+ dateSemaine: string;
10
+ }
11
+ export interface bookings {
12
+ /** ID of the booking */
13
+ id: string;
14
+ hote: {
15
+ /** ID of the hote */
16
+ id: number;
17
+ };
18
+ /** Year of the current booking session */
19
+ annee: number;
20
+ /** Week of the current booking session */
21
+ semaine: number;
22
+ borne: {
23
+ /** ID of the borne */
24
+ id: number;
25
+ /** 2p5 School Code */
26
+ code2p5: number;
27
+ /** Original ID of the borne */
28
+ idOrig: number;
29
+ /** Library used */
30
+ lib: string;
31
+ /** Prices of the borne */
32
+ prix: Array<number>;
33
+ };
34
+ /** Number of days allowed */
35
+ joursAutorises: number;
36
+ /** Days allowed */
37
+ jours: Array<bookDay>;
38
+ usage: number;
39
+ }
40
+ export interface bookDay {
41
+ /** Is reserved ? 0 == false & 1 == true */
42
+ dayReserv: number;
43
+ /** Last synchronisation of this booking */
44
+ reservDernSynchro: number;
45
+ /** Day of the week */
46
+ dayOfWeek: number;
47
+ web: {
48
+ /** ID of the day */
49
+ id: number;
50
+ };
51
+ /** Is allowed ? */
52
+ autorise: boolean;
53
+ /** Day label displayed on MyTurboself */
54
+ dayLabel: string;
55
+ }
56
+ export interface bookMealResponse {
57
+ dayReserv: number;
58
+ reservHorsKiosk: boolean;
59
+ reservDernSynchro: number;
60
+ web: {
61
+ id: string;
62
+ annee: number;
63
+ semaine: number;
64
+ borneId: number;
65
+ joursAutorises: number;
66
+ usage: number;
67
+ hote: userResponse;
68
+ };
69
+ rsvwebid: string;
70
+ dayOfWeek: number;
71
+ msg: string | null;
72
+ id: string;
73
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiQm9va2luZy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90eXBlcy9Cb29raW5nLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,42 @@
1
+ import { balanceResponse } from "./Balance";
2
+ export interface homeResponse {
3
+ latestPaiement: latestPayment;
4
+ historiques: Array<historyElement>;
5
+ comptesHote: Array<balanceResponse>;
6
+ }
7
+ export interface historyElement {
8
+ /** ID of the history element */
9
+ id: number;
10
+ /** Date of the history element in ISO-8601 */
11
+ date: string;
12
+ /** Type of the history element */
13
+ detail: string;
14
+ /** Amount of the history element who are debited on balance in cents */
15
+ debit: number;
16
+ /** Amount of the credit in cents */
17
+ credit: number | null;
18
+ }
19
+ export interface latestPayment {
20
+ /** ID of the payment */
21
+ id: number;
22
+ hote: {
23
+ /** ID of the hote */
24
+ id: number;
25
+ };
26
+ /** Date of the payment in ISO-8601 */
27
+ date: string;
28
+ /** Type of the payment (ex: CB)*/
29
+ type: string;
30
+ /** Amount of the payment in cents */
31
+ montant: number;
32
+ /** Date of the balance update in ISO-8601 */
33
+ dateMaj: string;
34
+ /** Status of the payment */
35
+ statut: string;
36
+ /** ID of the transaction */
37
+ idTransaction: string;
38
+ /** Token of the payment */
39
+ token: string;
40
+ /** Displayed message on MyTurboself */
41
+ msg: string;
42
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiSG9tZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90eXBlcy9Ib21lLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
@@ -0,0 +1,14 @@
1
+ export interface TurboselfLoginBody {
2
+ /** E-Mail address used to access to the Turboself account */
3
+ username: string;
4
+ /** Password used to access to the Turboself account */
5
+ password: string;
6
+ }
7
+ export interface TurboselfLoginResponse {
8
+ /** Access token used to authenticate the user */
9
+ access_token: string;
10
+ /** ID of the user */
11
+ userId: number;
12
+ /** ID of the hotel */
13
+ hoteId: number;
14
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiTG9naW4uanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9saWIvdHlwZXMvTG9naW4udHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IiJ9
@@ -0,0 +1,95 @@
1
+ export interface SchoolResponse {
2
+ /** School 2p5 identifier */
3
+ code2p5: number;
4
+ /** School Name */
5
+ nom: string;
6
+ /** Turboself version used by the School */
7
+ versionTS: string;
8
+ /** School ID */
9
+ id: number;
10
+ /** School Address 1 */
11
+ adr1: string;
12
+ /** School Address 2 */
13
+ adr2: string;
14
+ /** School Postal Code */
15
+ cp: string;
16
+ /** School City */
17
+ ville: string;
18
+ /** School Phone Number */
19
+ tel: string;
20
+ /** School First Synchronisation Date in ISO-8601 */
21
+ datePremSynchro: string;
22
+ /** School Last Synchronisation Date in ISO-8601 */
23
+ dateDernSynchro: string;
24
+ /** Turboself ID */
25
+ idTurboSelf: number;
26
+ /** School Currency Symbol */
27
+ currencySymbol: string;
28
+ configuration: SchoolConfiguration;
29
+ configurationsReserv: Array<SchoolReservation>;
30
+ configurationSelf: {
31
+ id: number;
32
+ nbmultiElvArg: number;
33
+ nbmultiElvFor: number;
34
+ nbmultiComArg: number;
35
+ nbmultiComFor: number;
36
+ nbmultiStgArg: number;
37
+ nbmultiStgFor: number;
38
+ dateDernSynchro: string;
39
+ };
40
+ /** National Identification Number of the School */
41
+ numEtab: string;
42
+ /** If the School is desactivated */
43
+ desactive: boolean;
44
+ /** MAC Address of the School server */
45
+ pcServeur: string;
46
+ /** Autorised School Transactions */
47
+ nbTransactionAutorise: number;
48
+ /** School Books Total */
49
+ nbReservationsTotal: number | null;
50
+ }
51
+ export interface SchoolReservation {
52
+ id: number;
53
+ usage: number;
54
+ elecom: number;
55
+ /** End of reservation */
56
+ finReserv: string;
57
+ }
58
+ export interface SchoolConfiguration {
59
+ /** School Configuration ID */
60
+ id: number;
61
+ /** School Website URL */
62
+ url: string;
63
+ /** School E-Mail */
64
+ email: string;
65
+ /** Minimum Meal to Pay */
66
+ nbRepasMini: number;
67
+ creanceMini: number;
68
+ montantCreditMini: number | null;
69
+ /** Actual Reservation Week */
70
+ nbSemaineReserv: number;
71
+ /** School Message */
72
+ msgAccueil: string;
73
+ /** Students has the right to use QRCode */
74
+ autoriseQrCodeEleve: boolean;
75
+ /** Commensals has the right to use QRCode */
76
+ autoriseQrCodeCommensal: boolean;
77
+ /** Trainees has the right to use QRCode */
78
+ autoriseQrCodeStagiaire: boolean;
79
+ /** If the account history of users is hidden */
80
+ cacherHistorique: boolean;
81
+ fermetures: Array<SchoolClosure>;
82
+ }
83
+ export interface SchoolClosure {
84
+ /** School Closure ID */
85
+ id: number;
86
+ /** User has the right to book a meal */
87
+ rsv: boolean;
88
+ /** User has the right to pay */
89
+ paiement: boolean;
90
+ /** From */
91
+ du: string;
92
+ /** To */
93
+ au: string;
94
+ synchro: unknown | null;
95
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiU2Nob29sLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vbGliL3R5cGVzL1NjaG9vbC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiIn0=
@@ -0,0 +1,69 @@
1
+ import { SchoolResponse } from "./School";
2
+ export interface userResponse {
3
+ /** The hoteId */
4
+ id: number;
5
+ idOrig: number;
6
+ etab: SchoolResponse;
7
+ /** Lastname of the user */
8
+ nom: string;
9
+ /** Firstname of the user */
10
+ prenom: string;
11
+ /** Payment mode of the user */
12
+ mode: string;
13
+ /** User Quality */
14
+ qualite: string;
15
+ /** Division of the user */
16
+ division: string;
17
+ /** Price of a meal */
18
+ prixDej: number;
19
+ type: number;
20
+ nbMulti: number;
21
+ /** User has the right to pay */
22
+ droitPaiement: boolean;
23
+ /** User has the right to book a meal */
24
+ droitReservation: boolean;
25
+ /** User has the right to access to the cafeteria */
26
+ droitCafeteria: boolean;
27
+ /** Last User synchronisation in ISO-8601 */
28
+ dateDernSynchro: string;
29
+ /** If the account is desactivated */
30
+ desactive: boolean;
31
+ /** If the password is private (wtf?) */
32
+ mdpPrive: boolean;
33
+ /** User has the right to book a meal if his balance is negative */
34
+ autoriseReservSoldeIns: boolean;
35
+ profilForfaitModule: number;
36
+ carteCodee: number;
37
+ }
38
+ export interface userInfo {
39
+ /** Lastname of the user */
40
+ nom: string;
41
+ /** Firstname of the user */
42
+ prenom: string;
43
+ /** Payment mode of the user */
44
+ mode: string;
45
+ /** User Quality */
46
+ qualite: string;
47
+ /** Division of the user */
48
+ division: string;
49
+ /** Price of a meal */
50
+ prixDej: number;
51
+ type: number;
52
+ nbMulti: number;
53
+ /** User has the right to pay */
54
+ droitPaiement: boolean;
55
+ /** User has the right to book a meal */
56
+ droitReservation: boolean;
57
+ /** User has the right to access to the cafeteria */
58
+ droitCafeteria: boolean;
59
+ /** Last User synchronisation in ISO-8601 */
60
+ dateDernSynchro: string;
61
+ /** If the account is desactivated */
62
+ desactive: boolean;
63
+ /** If the password is private (wtf?) */
64
+ mdpPrive: boolean;
65
+ /** User has the right to book a meal if his balance is negative */
66
+ autoriseReservSoldeIns: boolean;
67
+ profilForfaitModule: number;
68
+ carteCodee: number;
69
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiVXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL2xpYi90eXBlcy9Vc2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiIifQ==
package/package.json ADDED
@@ -0,0 +1,57 @@
1
+ {
2
+ "name": "turboself-api",
3
+ "version": "0.1.0",
4
+ "description": "A wrapper around Turboself internal API.",
5
+ "repository": "github:raphckrman/turboself-api",
6
+ "main": "./dist/index.js",
7
+ "module": "./dist/index.mjs",
8
+ "types": "./dist/index.d.ts",
9
+ "exports": {
10
+ ".": {
11
+ "types": "./dist/index.d.ts",
12
+ "require": "./dist/index.js",
13
+ "import": "./dist/index.mjs"
14
+ }
15
+ },
16
+ "scripts": {
17
+ "init": "npm install",
18
+ "build": "npm install && node scripts/build && gen-esm-wrapper dist/index.js dist/index.mjs",
19
+ "compile": "node scripts/build && gen-esm-wrapper dist/index.js dist/index.mjs",
20
+ "lint": "eslint lib",
21
+ "lintFix": "eslint lib --fix",
22
+ "devTest": "ts-node scripts/tests/client.ts"
23
+ },
24
+ "files": [
25
+ "dist"
26
+ ],
27
+ "keywords": [
28
+ "turboself",
29
+ "api",
30
+ "wrapper",
31
+ "student",
32
+ "France"
33
+ ],
34
+ "author": "Raphaël <raphckrman> (https://github.com/raphckrman)",
35
+ "license": "GPL-3.0",
36
+ "engines": {
37
+ "node": ">=18"
38
+ },
39
+ "devDependencies": {
40
+ "@inquirer/prompts": "^4.1.0",
41
+ "@stylistic/eslint-plugin": "^1.5.3",
42
+ "@types/node-forge": "^1.3.10",
43
+ "@types/pako": "^2.0.3",
44
+ "@types/set-cookie-parser": "^2.4.7",
45
+ "@typescript-eslint/parser": "^6.18.0",
46
+ "eslint": "^8.56.0",
47
+ "release-it": "^17.0.1",
48
+ "terser": "^5.26.0",
49
+ "tsup": "^8.0.1",
50
+ "tsx": "^4.7.0",
51
+ "typescript": "^5.3.3",
52
+ "gen-esm-wrapper": "^1.1.3"
53
+ },
54
+ "dependencies": {
55
+ "axios": "^1.6.7"
56
+ }
57
+ }