@communecter/cocolight-api-client 1.0.51 → 1.0.54
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/123.cocolight-api-client.browser.js +1 -1
- package/dist/123.cocolight-api-client.cjs +1 -1
- package/dist/774.cocolight-api-client.mjs.js +1 -1
- package/dist/cocolight-api-client.browser.js +1 -1
- package/dist/cocolight-api-client.cjs +1 -1
- package/dist/cocolight-api-client.mjs.js +1 -1
- package/dist/cocolight-api-client.vite.mjs.js +1 -1
- package/dist/cocolight-api-client.vite.mjs.js.map +1 -1
- package/package.json +15 -9
- package/src/Api.js +41 -23
- package/src/ApiClient.js +33 -18
- package/src/api/EndpointApi.js +95 -95
- package/src/error.js +63 -10
- package/src/index.js +65 -2
- package/src/utils/FileStorageStrategy.node.js +28 -2
- package/src/utils/MultiServerFileStorageStrategy.node.js +24 -2
- package/src/utils/MultiServerTokenStorageStrategy.js +84 -27
- package/src/utils/TokenStorage.js +79 -19
- package/src/utils/createDefaultMultiServerTokenStorageStrategy.js +33 -27
- package/src/utils/createDefaultTokenStorageStrategy.js +29 -23
- package/types/Api.d.ts +131 -0
- package/types/ApiClient.d.ts +377 -0
- package/types/EJSONType.d.ts +27 -0
- package/types/api/Badge.d.ts +24 -0
- package/types/api/BaseEntity.d.ts +1017 -0
- package/types/api/EndpointApi.d.ts +933 -0
- package/types/api/EntityRegistry.d.ts +22 -0
- package/types/api/Event.d.ts +38 -0
- package/types/api/News.d.ts +45 -0
- package/types/api/Organization.d.ts +87 -0
- package/types/api/Poi.d.ts +25 -0
- package/types/api/Project.d.ts +81 -0
- package/types/api/User.d.ts +203 -0
- package/types/api/UserApi.d.ts +13 -0
- package/types/endpoints.module.d.ts +14852 -0
- package/types/error.d.ts +80 -0
- package/types/index.d.ts +52 -0
- package/types/mixin/UserMixin.d.ts +1 -0
- package/types/utils/FileOfflineStorageStrategy.node.d.ts +10 -0
- package/types/utils/FileStorageStrategy.node.d.ts +25 -0
- package/types/utils/MultiServerFileStorageStrategy.node.d.ts +22 -0
- package/types/utils/MultiServerTokenStorageStrategy.d.ts +65 -0
- package/types/utils/OfflineClientManager.d.ts +94 -0
- package/types/utils/OfflineQueueStorageStrategy.d.ts +13 -0
- package/types/utils/TokenStorage.d.ts +76 -0
- package/types/utils/createDefaultMultiServerTokenStorageStrategy.d.ts +11 -0
- package/types/utils/createDefaultOfflineStrategy.d.ts +3 -0
- package/types/utils/createDefaultTokenStorageStrategy.d.ts +12 -0
- package/types/utils/reactive.d.ts +60 -0
- package/types/utils/stream-utils.node.d.ts +2 -0
- /package/{src → types}/api/EndpointApi.types.d.ts +0 -0
|
@@ -0,0 +1,1017 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* @typedef {import("../ApiClient.js").default} ApiClient
|
|
3
|
+
* @typedef {import("./EndpointApi.js").default} EndpointApi
|
|
4
|
+
*/
|
|
5
|
+
/**
|
|
6
|
+
* Classe de base pour toutes les entités métiers : utilisateurs, projets, organisations, etc.
|
|
7
|
+
* Fournit un système de brouillon (draft), transformation, appel API sécurisé,
|
|
8
|
+
* et gestion de données côté client avec support du mode offline.
|
|
9
|
+
* @abstract
|
|
10
|
+
*/
|
|
11
|
+
export class BaseEntity {
|
|
12
|
+
static entityTag: string;
|
|
13
|
+
/**
|
|
14
|
+
* Crée une nouvelle instance d'entité à partir des données du serveur.
|
|
15
|
+
*
|
|
16
|
+
* @param {Object} data - Données du serveur.
|
|
17
|
+
* @param {BaseEntity} parent - Instance parente.
|
|
18
|
+
* @param {Object} deps - Dépendances injectées.
|
|
19
|
+
* @returns {BaseEntity} Nouvelle instance d'entité.
|
|
20
|
+
*/
|
|
21
|
+
static fromServerData(data: any, parent: BaseEntity, deps: any): BaseEntity;
|
|
22
|
+
/**
|
|
23
|
+
* Restaure les données sérialisées en un objet d'origine.
|
|
24
|
+
*
|
|
25
|
+
* @param {Object} obj - L'objet à restaurer.
|
|
26
|
+
* @returns {Object} L'objet restauré.
|
|
27
|
+
*/
|
|
28
|
+
static _revive(obj: any): any;
|
|
29
|
+
/**
|
|
30
|
+
* Crée une instance d'entité à partir de données JSON.
|
|
31
|
+
*
|
|
32
|
+
* @param {Object} json - Données JSON à utiliser.
|
|
33
|
+
* @param {Object} parent - Instance parente.
|
|
34
|
+
* @param {Object} deps - Dépendances injectées.
|
|
35
|
+
* @returns {object} Nouvelle instance d'entité.
|
|
36
|
+
*/
|
|
37
|
+
static fromJSON(json: any, parent: any, deps: any): object;
|
|
38
|
+
/**
|
|
39
|
+
* Constructeur de l'entité.
|
|
40
|
+
* @param {Object} parent - L'ApiClient ou une entité parente.
|
|
41
|
+
* @param {Object} parent.apiClient - Instance de l'ApiClient.
|
|
42
|
+
* @param {Object} [parent.parent] - Instance parente.
|
|
43
|
+
* @param {Object} [data={}] - Données initiales.
|
|
44
|
+
* @param {Object} [deps={}] - Dépendances injectées (EndpointApi, autres entités).
|
|
45
|
+
* @param {Object|function} deps.EndpointApi - Instance de l'API.
|
|
46
|
+
* @param {function} deps.User - Classe d'entité utilisateur.
|
|
47
|
+
* @param {function} deps.Organization - Classe d'entité organisation.
|
|
48
|
+
* @param {function} deps.Project - Classe d'entité projet.
|
|
49
|
+
* @param {function} deps.Poi - Classe d'entité point d'intérêt.
|
|
50
|
+
* @param {function} deps.Event - Classe d'entité événement.
|
|
51
|
+
* @param {function} deps.Badge - Classe d'entité badge.
|
|
52
|
+
* @param {function} deps.News - Classe d'entité actualité.
|
|
53
|
+
* @param {string} [config.entityTag] - Tag d'entité (ex: "User", "Organization").
|
|
54
|
+
* @param {Object} [config={}] - Configuration optionnelle.
|
|
55
|
+
* @throws {ApiError} Si les dépendances ou parent sont invalides.
|
|
56
|
+
*/
|
|
57
|
+
constructor(parent: {
|
|
58
|
+
apiClient: any;
|
|
59
|
+
parent?: any;
|
|
60
|
+
}, data?: any, deps?: {
|
|
61
|
+
EndpointApi: any | Function;
|
|
62
|
+
User: Function;
|
|
63
|
+
Organization: Function;
|
|
64
|
+
Project: Function;
|
|
65
|
+
Poi: Function;
|
|
66
|
+
Event: Function;
|
|
67
|
+
Badge: Function;
|
|
68
|
+
News: Function;
|
|
69
|
+
}, config?: any);
|
|
70
|
+
/** @type {Object} Données de brouillon modifiables */
|
|
71
|
+
_draftData: any;
|
|
72
|
+
/** @type {Object} Snapshot initial des données de brouillon */
|
|
73
|
+
_initialDraftData: any;
|
|
74
|
+
/** @type {Object|null} Données reçues du serveur */
|
|
75
|
+
_serverData: any | null;
|
|
76
|
+
/** @type {boolean} Indique si `save()` est en cours */
|
|
77
|
+
_calledFromSave: boolean;
|
|
78
|
+
/** @type {boolean} Indique si le draft est synchronisé avec le serveur */
|
|
79
|
+
_syncReactiveDraft: boolean;
|
|
80
|
+
__entityTag: any;
|
|
81
|
+
deps: {
|
|
82
|
+
EndpointApi: any | Function;
|
|
83
|
+
User: Function;
|
|
84
|
+
Organization: Function;
|
|
85
|
+
Project: Function;
|
|
86
|
+
Poi: Function;
|
|
87
|
+
Event: Function;
|
|
88
|
+
Badge: Function;
|
|
89
|
+
News: Function;
|
|
90
|
+
};
|
|
91
|
+
/** @type {ApiClient} */
|
|
92
|
+
apiClient: ApiClient;
|
|
93
|
+
parent: {
|
|
94
|
+
apiClient: any;
|
|
95
|
+
parent?: any;
|
|
96
|
+
};
|
|
97
|
+
userContext: any;
|
|
98
|
+
/** @type {EndpointApi} */
|
|
99
|
+
endpointApi: EndpointApi;
|
|
100
|
+
data: any;
|
|
101
|
+
getEntityTag: (__entityTag: any) => any;
|
|
102
|
+
/** @returns {string|null} Identifiant de l'entité */
|
|
103
|
+
get id(): string | null;
|
|
104
|
+
/** @returns {string|null} Slug de l'entité */
|
|
105
|
+
get slug(): string | null;
|
|
106
|
+
/** Définit un ID (utilisé en interne) */
|
|
107
|
+
_id(newId: any): void;
|
|
108
|
+
/** @returns {boolean} Indique si l'utilisateur est connecté */
|
|
109
|
+
get isConnected(): boolean;
|
|
110
|
+
/** @returns {string|null} Identifiant utilisateur associé */
|
|
111
|
+
get userId(): string | null;
|
|
112
|
+
/** @returns {Object} Données de brouillon courantes */
|
|
113
|
+
get draftData(): any;
|
|
114
|
+
/** @returns {Object} Données de brouillon initiales */
|
|
115
|
+
get initialDraftData(): any;
|
|
116
|
+
/** @returns {Object|null} Données brutes du serveur */
|
|
117
|
+
get serverData(): any | null;
|
|
118
|
+
/** @returns {boolean} Indique si cette entité représente l'utilisateur connecté */
|
|
119
|
+
get isMe(): boolean;
|
|
120
|
+
/** @returns {string} Type de l'entité (ex: 'citoyens') */
|
|
121
|
+
getEntityType(): string;
|
|
122
|
+
/**
|
|
123
|
+
* Indique si le draft contient des modifications par rapport aux données initiales.
|
|
124
|
+
* @returns {boolean}
|
|
125
|
+
*/
|
|
126
|
+
hasChanges(): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Rafraîchit l'entité en rechargeant ses données depuis le serveur.
|
|
129
|
+
* @returns {Promise<Object>} Données mises à jour
|
|
130
|
+
*/
|
|
131
|
+
refresh(): Promise<any>;
|
|
132
|
+
/**
|
|
133
|
+
* Sauvegarde les modifications locales vers le serveur (add ou update).
|
|
134
|
+
* @returns {Promise<Object>} Données serveur mises à jour
|
|
135
|
+
*/
|
|
136
|
+
save(): Promise<any>;
|
|
137
|
+
/**
|
|
138
|
+
* Met à jour les données de l'entité avec de nouvelles données.
|
|
139
|
+
*
|
|
140
|
+
* @param {Object} newData - Les nouvelles données à appliquer.
|
|
141
|
+
* @returns {void}
|
|
142
|
+
* @private
|
|
143
|
+
*/
|
|
144
|
+
private _setData;
|
|
145
|
+
_updateDraftPreservingUserChanges(draft: any): void;
|
|
146
|
+
_resetInitialDraftData(): void;
|
|
147
|
+
_toRawDeep(obj: any): any;
|
|
148
|
+
/**
|
|
149
|
+
* Champs à ajouter automatiquement à chaque draft (ex: `typeElement`).
|
|
150
|
+
* Souvent utilisés dans les conditions `if/then` du JSON Schema.
|
|
151
|
+
* @type {Object<string, any>}
|
|
152
|
+
*/
|
|
153
|
+
defaultFields: {
|
|
154
|
+
[x: string]: any;
|
|
155
|
+
};
|
|
156
|
+
/**
|
|
157
|
+
* Champs à exclure explicitement du draft et des payloads.
|
|
158
|
+
* @type {string[]}
|
|
159
|
+
*/
|
|
160
|
+
removeFields: string[];
|
|
161
|
+
/**
|
|
162
|
+
* Transformations à appliquer à certains champs lors de la lecture depuis le draft.
|
|
163
|
+
* Clé = champ, valeur = fonction (val, full) => valeur transformée.
|
|
164
|
+
* @type {Object<string, function(any, object): any>}
|
|
165
|
+
*/
|
|
166
|
+
transforms: {
|
|
167
|
+
[x: string]: (arg0: any, arg1: object) => any;
|
|
168
|
+
};
|
|
169
|
+
/**
|
|
170
|
+
* ───────────────────────────────
|
|
171
|
+
* JSON
|
|
172
|
+
* ───────────────────────────────
|
|
173
|
+
*/
|
|
174
|
+
/**
|
|
175
|
+
* Convertit l'instance en JSON pour l'envoi au serveur.
|
|
176
|
+
*
|
|
177
|
+
* @returns {Object} Représentation JSON de l'instance.
|
|
178
|
+
*/
|
|
179
|
+
toJSON(): any;
|
|
180
|
+
_serialize(obj: any): any;
|
|
181
|
+
/**
|
|
182
|
+
* Supprime les propriétés non sérialisables d'un objet.
|
|
183
|
+
*
|
|
184
|
+
* @param {Object} obj - L'objet à nettoyer.
|
|
185
|
+
* @param {WeakSet} [seen] - Ensemble pour éviter les références circulaires.
|
|
186
|
+
* @returns {Object} L'objet nettoyé.
|
|
187
|
+
* @private
|
|
188
|
+
*/
|
|
189
|
+
private _removeUnserializables;
|
|
190
|
+
/**
|
|
191
|
+
* ───────────────────────────────
|
|
192
|
+
* UtilMixin
|
|
193
|
+
* ───────────────────────────────
|
|
194
|
+
*/
|
|
195
|
+
/**
|
|
196
|
+
* Appelle une méthode de l'API.
|
|
197
|
+
*
|
|
198
|
+
* @param {string} constant - Le nom de la méthode à appeler.
|
|
199
|
+
* @param {object} data - Les données à passer à la méthode.
|
|
200
|
+
* @returns {Promise<any>} - La promesse de la méthode appelée.
|
|
201
|
+
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
202
|
+
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
203
|
+
* @throws {ApiClientError} - Si l'utilisateur n'est pas authentifié.
|
|
204
|
+
*/
|
|
205
|
+
call(constant: string, data?: object): Promise<any>;
|
|
206
|
+
/**
|
|
207
|
+
* Appelle une méthode de l'API si l'utilisateur n'est pas connecté.
|
|
208
|
+
*
|
|
209
|
+
* @param {string} constant - Le nom de la méthode à appeler.
|
|
210
|
+
* @param {object} data - Les données à passer à la méthode.
|
|
211
|
+
* @returns {Promise<any>} - La promesse de la méthode appelée.
|
|
212
|
+
* @throws {ApiAuthenticationError} - Si l'utilisateur est connecté.
|
|
213
|
+
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
214
|
+
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
215
|
+
* @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
|
|
216
|
+
*/
|
|
217
|
+
callNoConnected(constant: string, data?: object): Promise<any>;
|
|
218
|
+
/**
|
|
219
|
+
* Appelle une méthode de l'API si l'utilisateur est connecté.
|
|
220
|
+
*
|
|
221
|
+
* @param {string|function} param - Le nom de la méthode à appeler ou une fonction de rappel.
|
|
222
|
+
* @param {object} data - Les données à passer à la méthode.
|
|
223
|
+
* @returns {Promise<any>} - La promesse de la méthode appelée.
|
|
224
|
+
* @throws {ApiAuthenticationError} - Si l'utilisateur n'est pas connecté.
|
|
225
|
+
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
226
|
+
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
227
|
+
* @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
|
|
228
|
+
*/
|
|
229
|
+
callIsConnected(param: string | Function, data?: object): Promise<any>;
|
|
230
|
+
/**
|
|
231
|
+
* Appelle une méthode de l'API si l'utilisateur est lui-même.
|
|
232
|
+
*
|
|
233
|
+
* @param {string|function} param - Le nom de la méthode à appeler ou une fonction de rappel.
|
|
234
|
+
* @param {object} data - Les données à passer à la méthode.
|
|
235
|
+
* @returns {Promise<any>} - La promesse de la méthode appelée.
|
|
236
|
+
* @throws {ApiAuthenticationError} - Si l'utilisateur n'est pas lui-même.
|
|
237
|
+
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
238
|
+
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
239
|
+
* @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
|
|
240
|
+
*/
|
|
241
|
+
callIsMe(param: string | Function, data?: object): Promise<any>;
|
|
242
|
+
/**
|
|
243
|
+
* Valide une image d'entrée.
|
|
244
|
+
*
|
|
245
|
+
* @param {File|Blob|Buffer|ReadableStream} imageInput - L'image à valider.
|
|
246
|
+
* @returns {Promise<File|Buffer|ReadableStream>} - L'image validée.
|
|
247
|
+
* @private
|
|
248
|
+
*/
|
|
249
|
+
private _validateImage;
|
|
250
|
+
/**
|
|
251
|
+
* Valide un fichier d'entrée.
|
|
252
|
+
*
|
|
253
|
+
* @param {File|Blob|Buffer|ReadableStream} fileInput - Le fichier à valider.
|
|
254
|
+
* @returns {Promise<File|Buffer|ReadableStream>} - Le fichier validé.
|
|
255
|
+
* @private
|
|
256
|
+
*/
|
|
257
|
+
private _validateFile;
|
|
258
|
+
/**
|
|
259
|
+
* Valide les entrées d'upload de fichiers.
|
|
260
|
+
*
|
|
261
|
+
* @param {File|Blob|Buffer|ReadableStream} input - Le fichier à valider.
|
|
262
|
+
* @param {Object} options - Options de validation.
|
|
263
|
+
* @param {Array} options.allowedMimeTypes - Types MIME autorisés.
|
|
264
|
+
* @param {string} options.expectedType - Type de fichier attendu (ex: "image", "file").
|
|
265
|
+
* @returns {Promise<File|Buffer|ReadableStream>} - Le fichier validé.
|
|
266
|
+
* @throws {ApiValidationError} - Si le type de fichier est invalide.
|
|
267
|
+
* @throws {Error} - Si le type de fichier est inconnu.
|
|
268
|
+
* @private
|
|
269
|
+
*/
|
|
270
|
+
private _validateUploadInput;
|
|
271
|
+
/**
|
|
272
|
+
* Transforme un Buffer en ReadableStream équivalent à fs.createReadStream
|
|
273
|
+
* @param {Buffer} buffer - Le buffer contenant les données binaires
|
|
274
|
+
* @param {string} filename - Nom de fichier (utilisé dans FormData)
|
|
275
|
+
* @param {string} mimeType - Type MIME (utilisé dans FormData)
|
|
276
|
+
* @returns {Object} - { stream, filename, mimeType }
|
|
277
|
+
* @private
|
|
278
|
+
*/
|
|
279
|
+
private _createReadStreamFromBuffer;
|
|
280
|
+
/**
|
|
281
|
+
* Transforme un Buffer en ReadableStream.
|
|
282
|
+
*
|
|
283
|
+
* @param {Buffer} buffer - Le buffer à transformer.
|
|
284
|
+
* @returns {Promise<stream.Readable>} - Un ReadableStream.
|
|
285
|
+
* @throws {Error} - Si appelé dans le navigateur.
|
|
286
|
+
* @private
|
|
287
|
+
*/
|
|
288
|
+
private _bufferToReadable;
|
|
289
|
+
/**
|
|
290
|
+
* Crée un PassThrough stream pour le traitement des fichiers.
|
|
291
|
+
*
|
|
292
|
+
* @returns {Promise<stream.PassThrough>} - Un PassThrough stream.
|
|
293
|
+
* @throws {Error} - Si appelé dans le navigateur.
|
|
294
|
+
* @private
|
|
295
|
+
*/
|
|
296
|
+
private _passThrough;
|
|
297
|
+
/**
|
|
298
|
+
* Supprime les propriétés d'un objet en fonction d'une liste de clés.
|
|
299
|
+
*
|
|
300
|
+
* @param {Object} obj - L'objet source.
|
|
301
|
+
* @param {Array} propsToRemove - Liste des clés à supprimer
|
|
302
|
+
* @param {boolean} [deep=false] - Si vrai, supprime les propriétés de manière récursive.
|
|
303
|
+
* @returns {Object} - Un nouvel objet sans les propriétés supprimées.
|
|
304
|
+
* @private
|
|
305
|
+
*/
|
|
306
|
+
private _omitProps;
|
|
307
|
+
/**
|
|
308
|
+
* Extrait les propriétés d'un objet en fonction d'une liste de clés.
|
|
309
|
+
*
|
|
310
|
+
* @param {Object} obj - L'objet source.
|
|
311
|
+
* @param {Array} keys - Liste des clés à extraire.
|
|
312
|
+
* @param {Object} [transforms={}] - Transformations à appliquer aux valeurs.
|
|
313
|
+
* @returns {Object} - Un nouvel objet contenant les propriétés extraites.
|
|
314
|
+
* @private
|
|
315
|
+
*/
|
|
316
|
+
private _pickProps;
|
|
317
|
+
/**
|
|
318
|
+
* Vérifie si au moins une clé est présente dans l'objet et n'est pas nulle.
|
|
319
|
+
*
|
|
320
|
+
* @param {Object} obj - L'objet à vérifier.
|
|
321
|
+
* @param {Array} keys - Liste des clés à vérifier.
|
|
322
|
+
* @returns {boolean} - true si au moins une clé est présente et non nulle, sinon false.
|
|
323
|
+
* @private
|
|
324
|
+
*/
|
|
325
|
+
private _hasAtLeastOne;
|
|
326
|
+
/**
|
|
327
|
+
* Crée un proxy filtré pour une liste d'entités.
|
|
328
|
+
* @param {Array} list - Liste d'entités.
|
|
329
|
+
* @returns {Proxy} Proxy filtré.
|
|
330
|
+
* @private
|
|
331
|
+
*/
|
|
332
|
+
private _createFilteredProxy;
|
|
333
|
+
/**
|
|
334
|
+
* Génère un nouvel identifiant unique.
|
|
335
|
+
* @returns {string} Un identifiant unique.
|
|
336
|
+
* @private
|
|
337
|
+
*/
|
|
338
|
+
private _newId;
|
|
339
|
+
/**
|
|
340
|
+
* ───────────────────────────────
|
|
341
|
+
* DraftStateMixin
|
|
342
|
+
* ───────────────────────────────
|
|
343
|
+
*/
|
|
344
|
+
/**
|
|
345
|
+
* Crée un proxy combinant draft + serveur, avec transformations facultatives.
|
|
346
|
+
* @param {Object} server
|
|
347
|
+
* @param {Object} draft
|
|
348
|
+
* @param {Array} allowedFields - champs autorisés dans le draft
|
|
349
|
+
* @param {Object} [transforms={}] - transformateurs de lecture
|
|
350
|
+
* @param {Object} [options={}] - options
|
|
351
|
+
* @returns {Proxy}
|
|
352
|
+
* @private
|
|
353
|
+
*/
|
|
354
|
+
private _createDraftProxy;
|
|
355
|
+
/**
|
|
356
|
+
* Extrait les champs modifiables d'un schéma JSON.
|
|
357
|
+
*
|
|
358
|
+
* @param {Object} schema - Le schéma JSON à analyser.
|
|
359
|
+
* @param {Object} data - Les données à comparer.
|
|
360
|
+
* @param {Object} ctx - Contexte d'extraction (pour la récursion).
|
|
361
|
+
* @param {Object} ctx.defs - Définitions de schéma.
|
|
362
|
+
* @param {Set} ctx.visited - Ensemble des schémas déjà visités.
|
|
363
|
+
* @returns {Array} - Liste des champs modifiables.
|
|
364
|
+
* @private
|
|
365
|
+
*/
|
|
366
|
+
private _extractWritableFields;
|
|
367
|
+
/**
|
|
368
|
+
* Construit un brouillon et un proxy à partir des données et du schéma.
|
|
369
|
+
*
|
|
370
|
+
* @param {Object} options - Options de construction.
|
|
371
|
+
* @param {Object} options.data - Données à utiliser pour le brouillon.
|
|
372
|
+
* @param {Object} [options.serverData=null] - Données du serveur.
|
|
373
|
+
* @param {string|Array} options.constant - Nom de la constante ou tableau de constantes.
|
|
374
|
+
* @param {ApiClient} options.apiClient - Instance de l'API.
|
|
375
|
+
* @param {Object} [options.transforms={}] - Transformations à appliquer.
|
|
376
|
+
* @param {boolean} [options.throwOnError=true] - Si vrai, lève une erreur en cas de problème.
|
|
377
|
+
* @param {Array} [options.removeFields=[]] - Liste des champs à ignorer.
|
|
378
|
+
* @returns {Object} - Objet contenant le brouillon et le proxy.
|
|
379
|
+
* @private
|
|
380
|
+
*/
|
|
381
|
+
private _buildDraftAndProxy;
|
|
382
|
+
/**
|
|
383
|
+
* Extrait les champs modifiés du schéma.
|
|
384
|
+
*
|
|
385
|
+
* @param {ApiClient} apiClient - Instance de l'API.
|
|
386
|
+
* @param {string} constant - Nom de la constante.
|
|
387
|
+
* @param {Object} data - Données à comparer.
|
|
388
|
+
* @param {Function} getInitialDraft - Fonction pour obtenir le brouillon initial.
|
|
389
|
+
* @param {Array} removeFields - Liste des champs à ignorer.
|
|
390
|
+
* @returns {Object|null} - Champs modifiés ou null.
|
|
391
|
+
* @private
|
|
392
|
+
*/
|
|
393
|
+
private _extractChangedFieldsFromSchema;
|
|
394
|
+
/**
|
|
395
|
+
* Extrait tous les champs valides selon le schéma, et retourne uniquement ceux qui ont changé par rapport au draft initial.
|
|
396
|
+
* Contrairement à `_extractChangedFieldsFromSchema`, cette méthode retourne l'ensemble des champs valides (`updated`)
|
|
397
|
+
* uniquement s'il y a au moins un champ modifié (`changed`).
|
|
398
|
+
*
|
|
399
|
+
* ⚠️ Les champs sont filtrés en fonction :
|
|
400
|
+
* - des champs définis comme modifiables dans le schéma (`writeable`)
|
|
401
|
+
* - des champs non exclus dans `removeFields`
|
|
402
|
+
* - des champs définis dans `data` (les `undefined` sont ignorés)
|
|
403
|
+
*
|
|
404
|
+
* @param {ApiClient} apiClient - L’instance de client API contenant les schémas.
|
|
405
|
+
* @param {string} constant - Le nom de la constante de schéma (ex: "ADD_EVENT").
|
|
406
|
+
* @param {Object} data - Les nouvelles données à comparer avec le draft initial.
|
|
407
|
+
* @param {() => Object} getInitialDraft - Fonction qui retourne le draft initial (souvent `this.initialDraftData`).
|
|
408
|
+
* @param {string[]} [removeFields=[]] - Champs à ignorer même s’ils sont valides.
|
|
409
|
+
* @returns {Object|null} - Un objet `updated` avec les champs valides si au moins un champ a changé, sinon `null`.
|
|
410
|
+
* @private
|
|
411
|
+
*/
|
|
412
|
+
private _extractAllValidFieldsFromSchema;
|
|
413
|
+
/**
|
|
414
|
+
* ───────────────────────────────
|
|
415
|
+
* MutualEntityMixin
|
|
416
|
+
* ───────────────────────────────
|
|
417
|
+
*/
|
|
418
|
+
/**
|
|
419
|
+
* Résout l'identifiant de l'entité si seul le slug est fourni.
|
|
420
|
+
* @param {string} type - Le type d'entité (ex : "citoyens", "organizations", "projects").
|
|
421
|
+
* @returns {Promise<string>} L'identifiant résolu.
|
|
422
|
+
* @private
|
|
423
|
+
*/
|
|
424
|
+
private _resolveId;
|
|
425
|
+
/**
|
|
426
|
+
* Récupère le profil public de l'entité.
|
|
427
|
+
*
|
|
428
|
+
* @returns {Promise<Object>} - Les données du profil public.
|
|
429
|
+
* @private
|
|
430
|
+
*/
|
|
431
|
+
private _getPublicProfile;
|
|
432
|
+
/**
|
|
433
|
+
* Récupère la classe d'entité et ses dépendances à partir du type d'entité.
|
|
434
|
+
*
|
|
435
|
+
* @param {string} entityType - Le type d'entité.
|
|
436
|
+
* @return {{ entityClass: Function, deps: Object } | null}
|
|
437
|
+
* @private
|
|
438
|
+
*/
|
|
439
|
+
private _getEntityMeta;
|
|
440
|
+
/**
|
|
441
|
+
* Lier des données d'entité à une instance d'entité.
|
|
442
|
+
*
|
|
443
|
+
* @param {string} entityType - Le type d'entité (ex : "citoyens", "organisations", "projets").
|
|
444
|
+
* @param {Object} entityData - Les données de l'entité à lier.
|
|
445
|
+
* @return {Object} L'entité liée.
|
|
446
|
+
* @private
|
|
447
|
+
*/
|
|
448
|
+
private _linkEntity;
|
|
449
|
+
/**
|
|
450
|
+
* Récupère et lie une entité à partir de son ID.
|
|
451
|
+
*
|
|
452
|
+
* @param {string} entityType - Le type d'entité.
|
|
453
|
+
* @param {string} entityId - L'identifiant de l'entité.
|
|
454
|
+
* @param {Object} [options] - Options supplémentaires :
|
|
455
|
+
* @param {boolean} [options.skipGet] - Si true, ne pas appeler `get()` sur l'entité.
|
|
456
|
+
* @return {Promise<Object|null>} L'entité liée ou null.
|
|
457
|
+
* @private
|
|
458
|
+
*/
|
|
459
|
+
private _linkEntityById;
|
|
460
|
+
/**
|
|
461
|
+
* Lie une liste d'entités à partir de leurs données.
|
|
462
|
+
*
|
|
463
|
+
* @param {Array<Object>} results - Liste de données d'entités.
|
|
464
|
+
* @return {Array<Object>} Liste d'entités liées.
|
|
465
|
+
* @private
|
|
466
|
+
*/
|
|
467
|
+
private _linkEntities;
|
|
468
|
+
/**
|
|
469
|
+
* Lie des entités présentes dans `this.serverData` à partir de leurs IDs,
|
|
470
|
+
* en les filtrant dynamiquement et en optionnellement les transformant.
|
|
471
|
+
*
|
|
472
|
+
* @param {string} entityType - Le type d'entité (ex : "badges", "citoyens", etc.).
|
|
473
|
+
* @param {Object} filters - Clés/valeurs de filtres dynamiques. Les valeurs peuvent être :
|
|
474
|
+
* - un littéral (comparaison stricte ou intelligente selon le type),
|
|
475
|
+
* - une chaîne (utilise `includes` insensible à la casse),
|
|
476
|
+
* - une RegExp (appliquée si la valeur est une chaîne),
|
|
477
|
+
* - une fonction `(value) => boolean`.
|
|
478
|
+
* @param {Object} [options] - Options supplémentaires :
|
|
479
|
+
* @param {string} [options.key] - Le champ de `this.serverData` à utiliser (par défaut = entityType).
|
|
480
|
+
* @param {Function} [options.mapFn] - Fonction de transformation `(entity) => any` appliquée au résultat.
|
|
481
|
+
*
|
|
482
|
+
* @return {Promise<Array<Object>>} Liste des entités liées, filtrées et éventuellement transformées.
|
|
483
|
+
*
|
|
484
|
+
* @example
|
|
485
|
+
* // Tous les badges avec `name` contenant "codev"
|
|
486
|
+
* const badges = await this.linkEntitiesFromServerData("badges", { name: "codev" });
|
|
487
|
+
*
|
|
488
|
+
* @example
|
|
489
|
+
* // Badges non expirés et visibles
|
|
490
|
+
* const badges = await this.linkEntitiesFromServerData("badges", {
|
|
491
|
+
* expiredOn: false,
|
|
492
|
+
* show: "true"
|
|
493
|
+
* });
|
|
494
|
+
*
|
|
495
|
+
* @example
|
|
496
|
+
* // Badges émis après 2023
|
|
497
|
+
* const badges = await this.linkEntitiesFromServerData("badges", {
|
|
498
|
+
* issuedOn: (v) => new Date(v) >= new Date("2023-01-01")
|
|
499
|
+
* });
|
|
500
|
+
*
|
|
501
|
+
* @example
|
|
502
|
+
* // Extraire uniquement les noms des badges
|
|
503
|
+
* const namesOnly = await this.linkEntitiesFromServerData("badges", {}, {
|
|
504
|
+
* mapFn: (badge) => badge.meta.name
|
|
505
|
+
* });
|
|
506
|
+
*/
|
|
507
|
+
linkEntitiesFromServerData(entityType: string, filters?: any, options?: {
|
|
508
|
+
key?: string;
|
|
509
|
+
mapFn?: Function;
|
|
510
|
+
}): Promise<Array<any>>;
|
|
511
|
+
/**
|
|
512
|
+
* Crée une instance d'entité à partir des données fournies.
|
|
513
|
+
* @param {string} entityType - Le type d'entité (ex : "citoyens", "organisations", "projets").
|
|
514
|
+
* @param {Object} entityData - Les données de l'entité.
|
|
515
|
+
* @return {Object} L'entité créée.
|
|
516
|
+
* @private
|
|
517
|
+
*/
|
|
518
|
+
private _entityInstanceData;
|
|
519
|
+
/**
|
|
520
|
+
* Crée une instance d'entité, et déclenche get() si certaines propriétés sont présentes.
|
|
521
|
+
* @param {string} entityType
|
|
522
|
+
* @param {Object} entityData
|
|
523
|
+
* @return {Promise<Object>}
|
|
524
|
+
*/
|
|
525
|
+
entity(entityType: string, entityData?: any): Promise<any>;
|
|
526
|
+
/**
|
|
527
|
+
* Récupère et lie une entité à partir de son slug.
|
|
528
|
+
* @param {string} slug - Le slug de l'entité.
|
|
529
|
+
* @return {Promise<Object|null>} L'entité liée ou null.
|
|
530
|
+
*/
|
|
531
|
+
entityBySlug(slug: string): Promise<any | null>;
|
|
532
|
+
/**
|
|
533
|
+
* Construit dynamiquement des filtres sur un lien entre entités
|
|
534
|
+
*
|
|
535
|
+
* @param {string} id - L'ID de l'entité cible.
|
|
536
|
+
* @param {Object} options - Options de filtrage.
|
|
537
|
+
* @param {"memberOf" | "projects"} [options.linkType] - Le type de lien (ex: "memberOf", "projects", etc.).
|
|
538
|
+
* @param {boolean} [options.isAdmin] - Si défini, filtre selon l'existence de isAdmin.
|
|
539
|
+
* @param {boolean} [options.isAdminPending] - Si défini, filtre selon l'existence de isAdminPending.
|
|
540
|
+
* @param {boolean} [options.isInviting] - Si défini, filtre selon l'existence de isInviting.
|
|
541
|
+
* @param {boolean} [options.toBeValidated] - Si défini, filtre selon l'existence de toBeValidated.
|
|
542
|
+
* @param {Array<string>} [options.roles] - Rôles à filtrer.
|
|
543
|
+
* @returns {Object} - Un objet de filtres à passer à une requête.
|
|
544
|
+
* @throws {TypeError} - Si les types des paramètres ne sont pas valides.
|
|
545
|
+
* @private
|
|
546
|
+
*/
|
|
547
|
+
private _buildLinkFilters;
|
|
548
|
+
/**
|
|
549
|
+
* Retourne les métadonnées de lien pour une entité :
|
|
550
|
+
* - `linkType` : clé dans `serverData.links`
|
|
551
|
+
* - `connectTypeConnect` : valeur envoyée pour `connect()`
|
|
552
|
+
* - `connectTypeDisconnect` : valeur envoyée pour `disconnect()`
|
|
553
|
+
* @typedef {Object} LinkMeta
|
|
554
|
+
* @property {string} linkType
|
|
555
|
+
* @property {string} connectTypeConnect
|
|
556
|
+
* @property {string} connectTypeDisconnect
|
|
557
|
+
* @returns {LinkMeta}
|
|
558
|
+
* @throws {ApiError} - Si le type d'entité est inconnu.
|
|
559
|
+
* @private
|
|
560
|
+
*/
|
|
561
|
+
private _getLinkMeta;
|
|
562
|
+
/**
|
|
563
|
+
* Vérifie si l'entité prend en charge les opérations de lien (`connect`, `disconnect`, etc.).
|
|
564
|
+
* Utilise `_getLinkMeta()` comme source unique de vérité.
|
|
565
|
+
*
|
|
566
|
+
* @throws {ApiError} - Si l'entité ne supporte pas les liens.
|
|
567
|
+
* @private
|
|
568
|
+
*/
|
|
569
|
+
private _checkLinkableEntity;
|
|
570
|
+
/**
|
|
571
|
+
* Retourne le lien de l'utilisateur connecté avec l'entité cible (dans `parent.serverData.links`)
|
|
572
|
+
* @private
|
|
573
|
+
*/
|
|
574
|
+
private _getLinkFromConnectedUser;
|
|
575
|
+
/**
|
|
576
|
+
* Soumet une demande de connexion à une entité (ex : membre, contributeur),
|
|
577
|
+
* ou valide l'invitation si elle existe déjà.
|
|
578
|
+
*
|
|
579
|
+
* @returns {Promise<Object>} - Résultat de l'API
|
|
580
|
+
* @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
|
|
581
|
+
* @private
|
|
582
|
+
*/
|
|
583
|
+
private _submitLinkRequest;
|
|
584
|
+
/**
|
|
585
|
+
* Soumet une demande pour devenir administrateur d'une entité.
|
|
586
|
+
*
|
|
587
|
+
* @returns {Promise<Object>}
|
|
588
|
+
* @throws {ApiError}
|
|
589
|
+
* @private
|
|
590
|
+
*/
|
|
591
|
+
private _submitLinkRequestAdmin;
|
|
592
|
+
/**
|
|
593
|
+
* Accepte une demande de lien (ex : invitation à rejoindre un groupe).
|
|
594
|
+
*
|
|
595
|
+
* @returns {Promise<Object>} - Résultat de l'API
|
|
596
|
+
* @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
|
|
597
|
+
* @private
|
|
598
|
+
*/
|
|
599
|
+
private _acceptLinkRequest;
|
|
600
|
+
/**
|
|
601
|
+
* Annule une demande de lien ou se déconnecte d'une entité.
|
|
602
|
+
*
|
|
603
|
+
* @returns {Promise<Object>} - Résultat de l'API
|
|
604
|
+
* @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
|
|
605
|
+
* @private
|
|
606
|
+
*/
|
|
607
|
+
private _leaveLinkRequest;
|
|
608
|
+
/**
|
|
609
|
+
* ───────────────────────────────
|
|
610
|
+
* EntityMixin
|
|
611
|
+
* ───────────────────────────────
|
|
612
|
+
*/
|
|
613
|
+
/**
|
|
614
|
+
* Récupérer le profil public de l'entité
|
|
615
|
+
*
|
|
616
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
617
|
+
*/
|
|
618
|
+
get(): Promise<any>;
|
|
619
|
+
/**
|
|
620
|
+
* Mettre à jour les paramètres d'un élément : Mise à jour des paramètres spécifiques d'un élément.
|
|
621
|
+
* Constant : UPDATE_SETTINGS
|
|
622
|
+
* @param {Object} data - Les données à envoyer.
|
|
623
|
+
* @param {string} data.type - data.type
|
|
624
|
+
* @param {undefined} data.value - data.value
|
|
625
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
626
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
627
|
+
* @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
|
|
628
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
629
|
+
*/
|
|
630
|
+
updateSettings(data?: {
|
|
631
|
+
type: string;
|
|
632
|
+
value: undefined;
|
|
633
|
+
}): Promise<any>;
|
|
634
|
+
/**
|
|
635
|
+
* Mettre à jour la description d'un élément : Permet de mettre à jour la description courte et complète d'un élément.
|
|
636
|
+
* Constant : UPDATE_BLOCK_DESCRIPTION
|
|
637
|
+
* @param {Object} data - Les données à envoyer.
|
|
638
|
+
* @param {string} data.descMentions - Mentions dans la description (default: "")
|
|
639
|
+
* @param {string} data.shortDescription - Courte description
|
|
640
|
+
* @param {string} data.description - Description complète
|
|
641
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
642
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
643
|
+
* @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
|
|
644
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
645
|
+
*/
|
|
646
|
+
updateDescription(data?: {
|
|
647
|
+
descMentions: string;
|
|
648
|
+
shortDescription: string;
|
|
649
|
+
description: string;
|
|
650
|
+
}): Promise<any>;
|
|
651
|
+
/**
|
|
652
|
+
* Mettre à jour les informations d'un élément : Permet de mettre à jour les informations générales d'un élément (nom, contacts, etc.).
|
|
653
|
+
* Constant : UPDATE_BLOCK_INFO
|
|
654
|
+
*/
|
|
655
|
+
updateInfo(data?: {}): Promise<any>;
|
|
656
|
+
/**
|
|
657
|
+
* Mettre à jour les réseaux sociaux d'un élément : Permet de mettre à jour les liens vers les réseaux sociaux d'un élément.
|
|
658
|
+
* Constant : UPDATE_BLOCK_SOCIAL
|
|
659
|
+
*/
|
|
660
|
+
updateSocial(data?: {}): Promise<any>;
|
|
661
|
+
/**
|
|
662
|
+
* Mettre à jour les localités d'un élément : Permet de mettre à jour l'adresse et les informations géographiques d'un élément.
|
|
663
|
+
* Constant : UPDATE_BLOCK_LOCALITY
|
|
664
|
+
*/
|
|
665
|
+
updateLocality(data?: {}): Promise<any>;
|
|
666
|
+
/**
|
|
667
|
+
* Mettre à jour le slug d'un élément : Permet de mettre à jour le slug pour une URL simplifiée.
|
|
668
|
+
* Constant : UPDATE_BLOCK_SLUG
|
|
669
|
+
* @param {Object} data - Les données à envoyer.
|
|
670
|
+
* @param {string} data.slug - Le nouveau slug à appliquer.
|
|
671
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
672
|
+
*/
|
|
673
|
+
updateSlug({ slug }: {
|
|
674
|
+
slug: string;
|
|
675
|
+
}): Promise<any>;
|
|
676
|
+
/**
|
|
677
|
+
* Mettre à jour l'image de profil : Permet de mettre à jour l'image de profil d'un utilisateur ou d'une entité.
|
|
678
|
+
* Constant : PROFIL_IMAGE
|
|
679
|
+
* @param {Object} data - Les données à envoyer.
|
|
680
|
+
* @param {string} data.profil_avatar - L'image de profil à mettre à jour.
|
|
681
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
682
|
+
*/
|
|
683
|
+
updateImageProfil({ profil_avatar: image }: {
|
|
684
|
+
profil_avatar: string;
|
|
685
|
+
}): Promise<any>;
|
|
686
|
+
/**
|
|
687
|
+
* Crée une instance d'organisation et récupère son profil si nécessaire.
|
|
688
|
+
*
|
|
689
|
+
* @param {Object} organizationData - Les données nécessaires pour initialiser l'organisation.
|
|
690
|
+
* @returns {Promise<Organization>} Une promesse qui résout l'objet Organisation créé.
|
|
691
|
+
* @throws {Error} Si une erreur se produit lors de la création de l'organisation.
|
|
692
|
+
*/
|
|
693
|
+
organization(organizationData?: any): Promise<Organization>;
|
|
694
|
+
/**
|
|
695
|
+
* Crée une instance de projet et récupère son profil si nécessaire.
|
|
696
|
+
*
|
|
697
|
+
* @param {Object} projectData - Les données nécessaires pour initialiser le projet.
|
|
698
|
+
* @returns {Promise<Project>} Une promesse qui résout l'objet Projet créé.
|
|
699
|
+
* @throws {Error} Si une erreur se produit lors de la création du projet.
|
|
700
|
+
*/
|
|
701
|
+
project(projectData?: any): Promise<Project>;
|
|
702
|
+
/**
|
|
703
|
+
* Crée une instance de POI et la récupère si nécessaire.
|
|
704
|
+
*
|
|
705
|
+
* @param {Object} poiData - Les données nécessaires pour initialiser le POI.
|
|
706
|
+
* @returns {Promise<Poi>} Une promesse qui résout l'objet POI créé.
|
|
707
|
+
* @throws {Error} Si une erreur se produit lors de la création du POI.
|
|
708
|
+
*/
|
|
709
|
+
poi(poiData?: any): Promise<Poi>;
|
|
710
|
+
/**
|
|
711
|
+
* Crée une instance d'événement et la récupère si nécessaire.
|
|
712
|
+
*
|
|
713
|
+
* @param {Object} eventData - Les données nécessaires pour initialiser l'événement.
|
|
714
|
+
* @returns {Promise<Event>} Une promesse qui résout l'objet Événement créé.
|
|
715
|
+
* @throws {Error} Si une erreur se produit lors de la création de l'événement.
|
|
716
|
+
*/
|
|
717
|
+
event(eventData?: any): Promise<Event>;
|
|
718
|
+
/**
|
|
719
|
+
* Crée une instance de badge et la récupère si nécessaire.
|
|
720
|
+
*
|
|
721
|
+
* @param {Object} badgeData - Les données nécessaires pour initialiser le badge.
|
|
722
|
+
* @returns {Promise<Badge>} Une promesse qui résout l'objet Badge créé.
|
|
723
|
+
* @throws {Error} Si une erreur se produit lors de la création du badge.
|
|
724
|
+
*/
|
|
725
|
+
badge(badgeData?: any): Promise<Badge>;
|
|
726
|
+
/**
|
|
727
|
+
* Crée une instance de news et la récupère si nécessaire.
|
|
728
|
+
*
|
|
729
|
+
* @param {Object} newsData - Les données nécessaires pour initialiser la news.
|
|
730
|
+
* @returns {Promise<News>} Une promesse qui résout l'objet News créé.
|
|
731
|
+
* @throws {Error} Si une erreur se produit lors de la création de la news.
|
|
732
|
+
*/
|
|
733
|
+
news(newsData?: any): Promise<News>;
|
|
734
|
+
/**
|
|
735
|
+
* Récupérer les organisations d'une entitée : la liste des organisations dont l'entité est membre ou admin valide.
|
|
736
|
+
* Constant : GET_ORGANIZATIONS_ADMIN | GET_ORGANIZATIONS_NO_ADMIN
|
|
737
|
+
* @param {Object} data - Les données à envoyer.
|
|
738
|
+
* @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
|
|
739
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
740
|
+
*/
|
|
741
|
+
getOrganizations(data?: any): Promise<any>;
|
|
742
|
+
/**
|
|
743
|
+
* Récupérer les projets d'une entitée : liste des projets de l'entité ou elle est "parent" ou "contributeur".
|
|
744
|
+
* Constant : GET_PROJECTS_ADMIN | GET_PROJECTS_NO_ADMIN
|
|
745
|
+
* @param {Object} data - Les données à envoyer.
|
|
746
|
+
* @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
|
|
747
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
748
|
+
*/
|
|
749
|
+
getProjects(data?: any): Promise<any>;
|
|
750
|
+
/**
|
|
751
|
+
* Récupérer les POIs d'une entité : liste des POIs de l'entité ou elle est "parent".
|
|
752
|
+
* Constant : GET_POIS_NO_ADMIN / GET_POIS_ADMIN
|
|
753
|
+
* @param {Object} data - Les données à envoyer.
|
|
754
|
+
* @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
|
|
755
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
756
|
+
*/
|
|
757
|
+
getPois(data?: any): Promise<any>;
|
|
758
|
+
/**
|
|
759
|
+
* Récupérer les abonnés d'une entité
|
|
760
|
+
* Constant : GET_SUBSCRIBERS
|
|
761
|
+
* @param {Object} data - Les données à envoyer.
|
|
762
|
+
* @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
|
|
763
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
764
|
+
*/
|
|
765
|
+
getSubscribers(data?: any): Promise<any>;
|
|
766
|
+
/**
|
|
767
|
+
* Liste des badges créés par l'entité
|
|
768
|
+
* Constant : GET_BADGES
|
|
769
|
+
* @param {Object} data - Les données à envoyer.
|
|
770
|
+
* @param {boolean} isNext - Indique si c'est une recherche suivante (pagination).
|
|
771
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
772
|
+
*/
|
|
773
|
+
getBadgesIssuer(data?: any): Promise<any>;
|
|
774
|
+
/**
|
|
775
|
+
* Récupérer les actualités : Récupère la liste d’actualités selon plusieurs critères.
|
|
776
|
+
* Constant : GET_NEWS
|
|
777
|
+
* @param {Object} data - Les données à envoyer.
|
|
778
|
+
* @param {number} data.dateLimit - Limite de date timestamp ou 0 (default: 0)
|
|
779
|
+
* @param {object} data.search - data.search
|
|
780
|
+
* @param {string} data.search.name - Nom ou terme recherché (default: "")
|
|
781
|
+
* @param {number} data.indexStep - Nombre de résultats par page (default: 12)
|
|
782
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
783
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
784
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
785
|
+
*/
|
|
786
|
+
getNews(data?: {
|
|
787
|
+
dateLimit: number;
|
|
788
|
+
search: {
|
|
789
|
+
name: string;
|
|
790
|
+
};
|
|
791
|
+
indexStep: number;
|
|
792
|
+
}): Promise<any>;
|
|
793
|
+
/**
|
|
794
|
+
* Récupérer la galerie d'une entité.
|
|
795
|
+
* Constant : GET_GALLERY
|
|
796
|
+
* @param {Object} data - Les données à envoyer.
|
|
797
|
+
* @param {string} data.pathParams.docType - Type de document (default: "image")
|
|
798
|
+
* @param {string} data.contentKey - Clé de contenu pour la galerie (default: "null")
|
|
799
|
+
* @param {string} data.folderId - ID du dossier pour la galerie (default: "null")
|
|
800
|
+
* @returns {Promise<Object>} - Les données de réponse.
|
|
801
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
802
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
803
|
+
*/
|
|
804
|
+
getGallery(data?: any): Promise<any>;
|
|
805
|
+
/**
|
|
806
|
+
* Soumet une demande pour rejoindre l'entité courante (ex. organisation, projet, événement...).
|
|
807
|
+
* Si une invitation est en attente, elle est automatiquement acceptée.
|
|
808
|
+
*
|
|
809
|
+
* @returns {Promise<Object>} - Résultat de la demande ou de la validation.
|
|
810
|
+
* @throws {ApiError} - Si l'entité ne supporte pas l'action ou si une demande est déjà en cours.
|
|
811
|
+
*/
|
|
812
|
+
requestToJoin(): Promise<any>;
|
|
813
|
+
/**
|
|
814
|
+
* Soumet une demande pour devenir administrateur de l'entité courante.
|
|
815
|
+
* Si une invitation est en attente, elle est automatiquement validée.
|
|
816
|
+
*
|
|
817
|
+
* @returns {Promise<Object>} - Résultat de la demande ou de la validation.
|
|
818
|
+
* @throws {ApiError} - Si l'entité ne supporte pas l'action ou si une demande est déjà en cours.
|
|
819
|
+
*/
|
|
820
|
+
requestToJoinAdmin(): Promise<any>;
|
|
821
|
+
/**
|
|
822
|
+
* Accepte une invitation à rejoindre l'entité courante.
|
|
823
|
+
* Ne fonctionne que si un lien avec `isInviting` est détecté.
|
|
824
|
+
*
|
|
825
|
+
* @returns {Promise<Object>} - Résultat de l'acceptation de l'invitation.
|
|
826
|
+
* @throws {ApiError} - Si aucune invitation n'est en attente ou si l'entité ne supporte pas cette action.
|
|
827
|
+
*/
|
|
828
|
+
acceptInvitation(): Promise<any>;
|
|
829
|
+
/**
|
|
830
|
+
* Se désengage de l'entité courante : quitte un rôle (membre, contributeur, etc.).
|
|
831
|
+
*
|
|
832
|
+
* @returns {Promise<Object>} - Résultat de la déconnexion.
|
|
833
|
+
* @throws {ApiError} - Si l'entité ne supporte pas l'action ou si l'utilisateur n'est pas lié à cette entité.
|
|
834
|
+
*/
|
|
835
|
+
leave(): Promise<any>;
|
|
836
|
+
/**
|
|
837
|
+
* S'abonne à l'entité courante.
|
|
838
|
+
*
|
|
839
|
+
* @returns {Promise<Object>} - Résultat de l'abonnement.
|
|
840
|
+
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
|
|
841
|
+
*/
|
|
842
|
+
follow(): Promise<any>;
|
|
843
|
+
/**
|
|
844
|
+
* Se désabonne de l'entité courante.
|
|
845
|
+
*
|
|
846
|
+
* @returns {Promise<Object>} - Résultat de la désinscription.
|
|
847
|
+
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
|
|
848
|
+
*/
|
|
849
|
+
unfollow(): Promise<any>;
|
|
850
|
+
/**
|
|
851
|
+
* Vérifie si l'utilisateur est connecté et a accès à l'entité.
|
|
852
|
+
*
|
|
853
|
+
* @param {string} action - Action à effectuer.
|
|
854
|
+
* @returns {void}
|
|
855
|
+
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
|
|
856
|
+
* @private
|
|
857
|
+
*/
|
|
858
|
+
private _checkAccess;
|
|
859
|
+
/**
|
|
860
|
+
* Vérifie si l'utilisateur a un lien valide avec l'entité.
|
|
861
|
+
*
|
|
862
|
+
* @param {Object} userLink - Lien de l'utilisateur avec l'entité.
|
|
863
|
+
* @param {boolean} userLink.toBeValidated - Indique si le lien est en attente de validation.
|
|
864
|
+
* @param {boolean} userLink.isInviting - Indique si l'utilisateur a été invité.
|
|
865
|
+
* @returns {boolean} - `true` si le lien est valide, `false` sinon.
|
|
866
|
+
* @private
|
|
867
|
+
*/
|
|
868
|
+
private _validateUserLink;
|
|
869
|
+
/**
|
|
870
|
+
* Vérifie si l'entité est d'un type spécifique.
|
|
871
|
+
*
|
|
872
|
+
* @param {...string} types - Types d'entité attendus.
|
|
873
|
+
* @throws {ApiError} - Si l'entité n'est pas du type attendu.
|
|
874
|
+
* @private
|
|
875
|
+
*/
|
|
876
|
+
private _assertEntityType;
|
|
877
|
+
/**
|
|
878
|
+
* Vérifie si l'entité est liée à un type de lien spécifique.
|
|
879
|
+
*
|
|
880
|
+
* @param {string} linkType - Type de lien à vérifier.
|
|
881
|
+
* @returns {boolean} - `true` si l'entité est liée, `false` sinon.
|
|
882
|
+
* @private
|
|
883
|
+
*/
|
|
884
|
+
private _isLinked;
|
|
885
|
+
/**
|
|
886
|
+
* Vérifie si l'utilisateur est l'auteur de l'entité.
|
|
887
|
+
*
|
|
888
|
+
* @returns {boolean} - `true` si l'utilisateur est l'auteur, `false` sinon.
|
|
889
|
+
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si les données du serveur ne sont pas disponibles.
|
|
890
|
+
*/
|
|
891
|
+
isAuthor(): boolean;
|
|
892
|
+
/**
|
|
893
|
+
* Vérifie si l'utilisateur est administrateur de l'entité.
|
|
894
|
+
*
|
|
895
|
+
* @returns {boolean} - `true` si l'utilisateur est administrateur, `false` sinon.
|
|
896
|
+
* @throws {ApiError}
|
|
897
|
+
*/
|
|
898
|
+
isAdmin(): boolean;
|
|
899
|
+
/**
|
|
900
|
+
* Vérifie si l'utilisateur est soit l'auteur, soit administrateur de l'entité.
|
|
901
|
+
*
|
|
902
|
+
* @returns {boolean} - `true` si l'utilisateur est l'auteur ou administrateur, `false` sinon.
|
|
903
|
+
* @throws {ApiError}
|
|
904
|
+
*/
|
|
905
|
+
isAuthorOrAdmin(): boolean;
|
|
906
|
+
/**
|
|
907
|
+
* Vérifie si l'utilisateur est membre de l'entité.
|
|
908
|
+
*
|
|
909
|
+
* @returns {boolean} - `true` si l'utilisateur est membre, `false` sinon.
|
|
910
|
+
* @throws {ApiError}
|
|
911
|
+
*/
|
|
912
|
+
isMember(): boolean;
|
|
913
|
+
/**
|
|
914
|
+
* Vérifie si l'utilisateur est contributeur de l'entité.
|
|
915
|
+
*
|
|
916
|
+
* @returns {boolean} - `true` si l'utilisateur est contributeur, `false` sinon.
|
|
917
|
+
* @throws {ApiError}
|
|
918
|
+
*/
|
|
919
|
+
isContributor(): boolean;
|
|
920
|
+
/**
|
|
921
|
+
* Vérifie si l'utilisateur est participant de l'entité.
|
|
922
|
+
*
|
|
923
|
+
* @returns {boolean} - `true` si l'utilisateur est participant, `false` sinon.
|
|
924
|
+
* @throws {ApiError}
|
|
925
|
+
*/
|
|
926
|
+
isAttendee(): boolean;
|
|
927
|
+
/**
|
|
928
|
+
* Vérifie si l'utilisateur suit l'entité.
|
|
929
|
+
*
|
|
930
|
+
* @returns {boolean} - `true` si l'utilisateur suit l'entité, `false` sinon.
|
|
931
|
+
* @throws {ApiError}
|
|
932
|
+
*/
|
|
933
|
+
isFollower(): boolean;
|
|
934
|
+
/**
|
|
935
|
+
* Vérifie si l'utilisateur est abonné à l'entité.
|
|
936
|
+
*
|
|
937
|
+
* @returns {boolean} - `true` si l'utilisateur est abonné, `false` sinon.
|
|
938
|
+
* @throws {ApiError}
|
|
939
|
+
*/
|
|
940
|
+
isFollowing(): boolean;
|
|
941
|
+
/**
|
|
942
|
+
* Récupère le JSON personnalisé de l'entité
|
|
943
|
+
*
|
|
944
|
+
* @returns {Promise<Object>} - Le JSON personnalisé de l'entité.
|
|
945
|
+
* @throws {ApiError} - Si le slug de l'entité n'est pas défini.
|
|
946
|
+
*/
|
|
947
|
+
getCostumJson(): Promise<any>;
|
|
948
|
+
/**
|
|
949
|
+
* Génère des plages d'index pour la pagination.
|
|
950
|
+
*
|
|
951
|
+
* @param {Array<string>} searchType - Types de recherche.
|
|
952
|
+
* @param {number} indexStep - Pas d'index.
|
|
953
|
+
* @param {Object} previousRanges - Plages précédentes.
|
|
954
|
+
* @returns {Object} - Plages d'index générées.
|
|
955
|
+
* @private
|
|
956
|
+
*/
|
|
957
|
+
private _generateRanges;
|
|
958
|
+
/**
|
|
959
|
+
* Normalise le compte des résultats.
|
|
960
|
+
*
|
|
961
|
+
* @param {Object} count - Compte des résultats.
|
|
962
|
+
* @returns {Object} - Compte normalisé.
|
|
963
|
+
* @private
|
|
964
|
+
*/
|
|
965
|
+
private _normalizeCount;
|
|
966
|
+
/**
|
|
967
|
+
* Récupère une valeur par défaut depuis un endpoint donné.
|
|
968
|
+
*
|
|
969
|
+
* @param {string} constant - Le nom unique de l’endpoint (ex: "GET_ORGANIZATIONS_NO_ADMIN")
|
|
970
|
+
* @param {string} path - Le chemin vers la propriété (ex: "searchType")
|
|
971
|
+
* @returns {*} La valeur par défaut, ou undefined si non trouvée
|
|
972
|
+
*/
|
|
973
|
+
_getDefaultFromEndpoint(constant: string, path: string): any;
|
|
974
|
+
/**
|
|
975
|
+
* Coeur de pagination stateless et réutilisable, sans logique métier.
|
|
976
|
+
*
|
|
977
|
+
* @param {Object} config
|
|
978
|
+
* @param {Object} config.initialData - Paramètres de départ
|
|
979
|
+
* @param {Function} config.finalizer - Fonction async qui retourne { results, count }
|
|
980
|
+
*
|
|
981
|
+
* @returns {Object} paginator avec .next() et .prev()
|
|
982
|
+
*/
|
|
983
|
+
_createPaginatorEngine({ initialData, finalizer }: {
|
|
984
|
+
initialData: any;
|
|
985
|
+
finalizer: Function;
|
|
986
|
+
}): any;
|
|
987
|
+
/**
|
|
988
|
+
* Injection de contexte Communecter dans une requête finalizer.
|
|
989
|
+
*
|
|
990
|
+
* @param {Function} baseFinalizer - fonction async(data) => { results, count }
|
|
991
|
+
* @returns {Function} fonction enrichie
|
|
992
|
+
*/
|
|
993
|
+
_withCostumContext(baseFinalizer: Function): Function;
|
|
994
|
+
/**
|
|
995
|
+
* ───────────────────────────────
|
|
996
|
+
* custom
|
|
997
|
+
* ───────────────────────────────
|
|
998
|
+
*/
|
|
999
|
+
/**
|
|
1000
|
+
* Recherche liée à l'entité, version stateless.
|
|
1001
|
+
*
|
|
1002
|
+
* @param {Object} data - Données initiales de recherche.
|
|
1003
|
+
* @returns {Object} - Un paginateur avec .next(), .prev(), etc.
|
|
1004
|
+
*/
|
|
1005
|
+
searchCostum(data?: any): any;
|
|
1006
|
+
costumEventRequestActors(data?: {}): Promise<any>;
|
|
1007
|
+
costumEventRequestSubevents(data?: {}): Promise<any>;
|
|
1008
|
+
costumEventRequestDates(data?: {}): Promise<any>;
|
|
1009
|
+
costumEventRequestElementEvent(data?: {}): Promise<any>;
|
|
1010
|
+
costumEventRequestCategories(data?: {}): Promise<any>;
|
|
1011
|
+
costumEventRequestEvent(data?: {}): Promise<any>;
|
|
1012
|
+
costumEventRequestLinkTlToEvent(data?: {}): Promise<any>;
|
|
1013
|
+
costumEventRequestLoadContextTag(data?: {}): Promise<any>;
|
|
1014
|
+
}
|
|
1015
|
+
export default BaseEntity;
|
|
1016
|
+
export type ApiClient = import("../ApiClient.js").default;
|
|
1017
|
+
export type EndpointApi = import("./EndpointApi.js").default;
|