@communecter/cocolight-api-client 1.0.54 → 1.0.56
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/401.cocolight-api-client.browser.js +1 -0
- package/dist/401.cocolight-api-client.cjs +1 -0
- package/dist/401.cocolight-api-client.mjs.js +1 -0
- package/dist/588.cocolight-api-client.browser.js +1 -0
- package/dist/588.cocolight-api-client.cjs +1 -0
- package/dist/588.cocolight-api-client.mjs.js +1 -0
- package/dist/593.cocolight-api-client.browser.js +1 -0
- package/dist/593.cocolight-api-client.cjs +1 -0
- package/dist/593.cocolight-api-client.mjs.js +1 -0
- package/dist/839.cocolight-api-client.browser.js +1 -0
- package/dist/839.cocolight-api-client.cjs +1 -0
- package/dist/839.cocolight-api-client.mjs.js +1 -0
- package/dist/cocolight-api-client.browser.js +3 -3
- 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 +29 -17
- package/src/{Api.js → Api.ts} +85 -95
- package/src/{ApiClient.js → ApiClient.ts} +436 -247
- package/src/EJSONType.ts +103 -0
- package/src/api/{Badge.js → Badge.ts} +56 -45
- package/src/api/BaseEntity.ts +3890 -0
- package/src/api/Comment.ts +200 -0
- package/src/api/{EndpointApi.js → EndpointApi.ts} +363 -297
- package/src/api/EndpointApi.types.ts +4609 -0
- package/src/api/EntityRegistry.ts +203 -0
- package/src/api/Event.ts +332 -0
- package/src/api/News.ts +331 -0
- package/src/api/{Organization.js → Organization.ts} +155 -119
- package/src/api/{Poi.js → Poi.ts} +68 -60
- package/src/api/{Project.js → Project.ts} +150 -127
- package/src/api/{User.js → User.ts} +321 -256
- package/src/api/UserApi.ts +148 -0
- package/src/api/serverDataType/Comment.ts +88 -0
- package/src/api/serverDataType/Event.ts +80 -0
- package/src/api/serverDataType/News.ts +138 -0
- package/src/api/serverDataType/Organization.ts +80 -0
- package/src/api/serverDataType/Project.ts +71 -0
- package/src/api/serverDataType/User.ts +103 -0
- package/src/api/serverDataType/common.ts +80 -0
- package/src/endpoints.module.ts +2621 -0
- package/src/error.ts +86 -0
- package/src/index.ts +86 -0
- package/src/mixin/UserMixin.ts +4 -0
- package/src/types/api-responses.ts +217 -0
- package/src/types/entities.ts +22 -0
- package/src/types/error-guards.ts +230 -0
- package/src/types/index.ts +39 -0
- package/src/types/payloads.ts +21 -0
- package/src/types/transforms.ts +110 -0
- package/src/utils/{FileOfflineStorageStrategy.node.js → FileOfflineStorageStrategy.node.ts} +15 -12
- package/src/utils/{FileStorageStrategy.node.js → FileStorageStrategy.node.ts} +16 -39
- package/src/utils/MultiServerFileStorageStrategy.node.ts +67 -0
- package/src/utils/MultiServerTokenStorageStrategy.ts +139 -0
- package/src/utils/{OfflineClientManager.js → OfflineClientManager.ts} +82 -86
- package/src/utils/OfflineQueueStorageStrategy.ts +47 -0
- package/src/utils/TokenStorage.ts +77 -0
- package/src/utils/compat.ts +12 -0
- package/src/utils/createDefaultMultiServerTokenStorageStrategy.ts +35 -0
- package/src/utils/{createDefaultOfflineStrategy.js → createDefaultOfflineStrategy.ts} +8 -3
- package/src/utils/createDefaultTokenStorageStrategy.ts +33 -0
- package/src/utils/{reactive.js → reactive.ts} +49 -40
- package/src/utils/stream-utils.node.ts +12 -0
- package/types/Api.d.ts +38 -82
- package/types/Api.d.ts.map +1 -0
- package/types/ApiClient.d.ts +244 -184
- package/types/ApiClient.d.ts.map +1 -0
- package/types/EJSONType.d.ts +48 -22
- package/types/EJSONType.d.ts.map +1 -0
- package/types/api/Badge.d.ts +20 -20
- package/types/api/Badge.d.ts.map +1 -0
- package/types/api/BaseEntity.d.ts +751 -446
- package/types/api/BaseEntity.d.ts.map +1 -0
- package/types/api/Comment.d.ts +36 -0
- package/types/api/EndpointApi.d.ts +347 -295
- package/types/api/EndpointApi.d.ts.map +1 -0
- package/types/api/EndpointApi.types.d.ts +3914 -4133
- package/types/api/EntityRegistry.d.ts +18 -16
- package/types/api/EntityRegistry.d.ts.map +1 -0
- package/types/api/Event.d.ts +119 -35
- package/types/api/Event.d.ts.map +1 -0
- package/types/api/News.d.ts +52 -20
- package/types/api/News.d.ts.map +1 -0
- package/types/api/Organization.d.ts +165 -49
- package/types/api/Organization.d.ts.map +1 -0
- package/types/api/Poi.d.ts +51 -22
- package/types/api/Poi.d.ts.map +1 -0
- package/types/api/Project.d.ts +151 -52
- package/types/api/Project.d.ts.map +1 -0
- package/types/api/User.d.ts +222 -93
- package/types/api/User.d.ts.map +1 -0
- package/types/api/UserApi.d.ts +60 -9
- package/types/api/UserApi.d.ts.map +1 -0
- package/types/api/serverDataType/Comment.d.ts +83 -0
- package/types/api/serverDataType/Event.d.ts +67 -0
- package/types/api/serverDataType/News.d.ts +130 -0
- package/types/api/serverDataType/Organization.d.ts +65 -0
- package/types/api/serverDataType/Organization.d.ts.map +1 -0
- package/types/api/serverDataType/Project.d.ts +58 -0
- package/types/api/serverDataType/Project.d.ts.map +1 -0
- package/types/api/serverDataType/User.d.ts +86 -0
- package/types/api/serverDataType/User.d.ts.map +1 -0
- package/types/api/serverDataType/common.d.ts +71 -0
- package/types/api/serverDataType/common.d.ts.map +1 -0
- package/types/endpoints.module.d.ts +6922 -1215
- package/types/endpoints.module.d.ts.map +1 -0
- package/types/error.d.ts +25 -51
- package/types/error.d.ts.map +1 -0
- package/types/index.d.ts +55 -48
- package/types/index.d.ts.map +1 -0
- package/types/mixin/UserMixin.d.ts +1 -1
- package/types/mixin/UserMixin.d.ts.map +1 -0
- package/types/types/api-responses.d.ts +190 -0
- package/types/types/api-responses.d.ts.map +1 -0
- package/types/types/entities.d.ts +17 -0
- package/types/types/entities.d.ts.map +1 -0
- package/types/types/error-guards.d.ts +99 -0
- package/types/types/error-guards.d.ts.map +1 -0
- package/types/types/index.d.ts +7 -0
- package/types/types/payloads.d.ts +17 -0
- package/types/types/payloads.d.ts.map +1 -0
- package/types/types/transforms.d.ts +79 -0
- package/types/types/transforms.d.ts.map +1 -0
- package/types/utils/FileOfflineStorageStrategy.node.d.ts +10 -9
- package/types/utils/FileOfflineStorageStrategy.node.d.ts.map +1 -0
- package/types/utils/FileStorageStrategy.node.d.ts +9 -20
- package/types/utils/FileStorageStrategy.node.d.ts.map +1 -0
- package/types/utils/MultiServerFileStorageStrategy.node.d.ts +13 -18
- package/types/utils/MultiServerFileStorageStrategy.node.d.ts.map +1 -0
- package/types/utils/MultiServerTokenStorageStrategy.d.ts +30 -51
- package/types/utils/MultiServerTokenStorageStrategy.d.ts.map +1 -0
- package/types/utils/OfflineClientManager.d.ts +52 -88
- package/types/utils/OfflineClientManager.d.ts.map +1 -0
- package/types/utils/OfflineQueueStorageStrategy.d.ts +12 -9
- package/types/utils/OfflineQueueStorageStrategy.d.ts.map +1 -0
- package/types/utils/TokenStorage.d.ts +20 -70
- package/types/utils/TokenStorage.d.ts.map +1 -0
- package/types/utils/compat.d.ts +4 -0
- package/types/utils/compat.d.ts.map +1 -0
- package/types/utils/createDefaultMultiServerTokenStorageStrategy.d.ts +2 -11
- package/types/utils/createDefaultMultiServerTokenStorageStrategy.d.ts.map +1 -0
- package/types/utils/createDefaultOfflineStrategy.d.ts +2 -3
- package/types/utils/createDefaultOfflineStrategy.d.ts.map +1 -0
- package/types/utils/createDefaultTokenStorageStrategy.d.ts +2 -12
- package/types/utils/createDefaultTokenStorageStrategy.d.ts.map +1 -0
- package/types/utils/reactive.d.ts +10 -16
- package/types/utils/reactive.d.ts.map +1 -0
- package/types/utils/stream-utils.node.d.ts +3 -2
- package/types/utils/stream-utils.node.d.ts.map +1 -0
- package/dist/123.cocolight-api-client.browser.js +0 -1
- package/dist/123.cocolight-api-client.cjs +0 -1
- package/dist/22.cocolight-api-client.mjs.js +0 -1
- package/dist/339.cocolight-api-client.mjs.js +0 -1
- package/dist/394.cocolight-api-client.browser.js +0 -1
- package/dist/394.cocolight-api-client.cjs +0 -1
- package/dist/405.cocolight-api-client.browser.js +0 -1
- package/dist/405.cocolight-api-client.cjs +0 -1
- package/dist/774.cocolight-api-client.mjs.js +0 -1
- package/dist/790.cocolight-api-client.mjs.js +0 -1
- package/dist/931.cocolight-api-client.browser.js +0 -1
- package/dist/931.cocolight-api-client.cjs +0 -1
- package/src/EJSONType.js +0 -53
- package/src/api/BaseEntity.js +0 -2828
- package/src/api/EntityRegistry.js +0 -152
- package/src/api/Event.js +0 -226
- package/src/api/News.js +0 -244
- package/src/api/UserApi.js +0 -81
- package/src/endpoints.module.js +0 -5
- package/src/error.js +0 -121
- package/src/index.js +0 -97
- package/src/mixin/UserMixin.js +0 -8
- package/src/utils/MultiServerFileStorageStrategy.node.js +0 -87
- package/src/utils/MultiServerTokenStorageStrategy.js +0 -188
- package/src/utils/OfflineQueueStorageStrategy.js +0 -51
- package/src/utils/TokenStorage.js +0 -153
- package/src/utils/createDefaultMultiServerTokenStorageStrategy.js +0 -51
- package/src/utils/createDefaultTokenStorageStrategy.js +0 -49
- package/src/utils/stream-utils.node.js +0 -10
|
@@ -1,124 +1,235 @@
|
|
|
1
|
+
import type { UpdateSettingsData, UpdateBlockDescriptionData, UpdateBlockInfoData, UpdateBlockSocialData, UpdateBlockLocalityData, GetNewsData, GetGalleryData, GlobalAutocompleteCostumData, CostumEventRequestActorsData, CostumEventRequestSubeventsData, CostumEventRequestDatesData, CostumEventRequestElementEventData, CostumEventRequestCategoriesData, CostumEventRequestEventData, CostumEventRequestLinkTlToEventData, CostumEventRequestLoadContextTagData, GetOrganizationsAdminData, GetOrganizationsNoAdminData, GetProjectsAdminData, GetProjectsNoAdminData, GetPoisAdminData, GetPoisNoAdminData, GetSubscribersData, GetBadgesData } from "./EndpointApi.types.js";
|
|
2
|
+
import type { TransformsMap } from "../types/entities.js";
|
|
1
3
|
/**
|
|
2
|
-
*
|
|
3
|
-
*
|
|
4
|
+
* Types pour les méthodes d'entité (organization, project, poi, event, badge, news)
|
|
5
|
+
* Permettent soit de récupérer une entité existante (GET), soit de créer une nouvelle instance (CREATE)
|
|
4
6
|
*/
|
|
7
|
+
type OrganizationInput = {
|
|
8
|
+
id: string;
|
|
9
|
+
} | {
|
|
10
|
+
slug: string;
|
|
11
|
+
} | Record<string, any>;
|
|
12
|
+
type ProjectInput = {
|
|
13
|
+
id: string;
|
|
14
|
+
} | {
|
|
15
|
+
slug: string;
|
|
16
|
+
} | Record<string, any>;
|
|
17
|
+
type PoiInput = {
|
|
18
|
+
id: string;
|
|
19
|
+
} | {
|
|
20
|
+
slug: string;
|
|
21
|
+
} | Record<string, any>;
|
|
22
|
+
type EventInput = {
|
|
23
|
+
id: string;
|
|
24
|
+
} | {
|
|
25
|
+
slug: string;
|
|
26
|
+
} | Record<string, any>;
|
|
27
|
+
type BadgeInput = {
|
|
28
|
+
id: string;
|
|
29
|
+
} | Record<string, any>;
|
|
30
|
+
type NewsInput = {
|
|
31
|
+
id: string;
|
|
32
|
+
} | Record<string, any>;
|
|
33
|
+
type ApiClient = import("../ApiClient.js").default;
|
|
34
|
+
type EndpointApi = import("./EndpointApi.js").default;
|
|
35
|
+
type User = import("./User.js").User;
|
|
36
|
+
type Organization = import("./Organization.js").Organization;
|
|
37
|
+
type Project = import("./Project.js").Project;
|
|
38
|
+
type EventEntity = import("./Event.js").Event;
|
|
39
|
+
type Poi = import("./Poi.js").Poi;
|
|
40
|
+
type News = import("./News.js").News;
|
|
41
|
+
type Badge = import("./Badge.js").Badge;
|
|
42
|
+
type Comment = import("./Comment.js").Comment;
|
|
43
|
+
type AnyEntity = User | Organization | Project | Poi | EventEntity | Badge | News | Comment;
|
|
44
|
+
type ParentLike = BaseEntity<any> & {
|
|
45
|
+
apiClient: ApiClient;
|
|
46
|
+
userContext?: User | null;
|
|
47
|
+
};
|
|
48
|
+
type EndpointApiCtor = {
|
|
49
|
+
new (apiClient: ApiClient): EndpointApi;
|
|
50
|
+
};
|
|
51
|
+
type EndpointApiDep = EndpointApi | EndpointApiCtor;
|
|
52
|
+
interface Deps {
|
|
53
|
+
EndpointApi: EndpointApiDep;
|
|
54
|
+
User?: any;
|
|
55
|
+
Organization?: any;
|
|
56
|
+
Project?: any;
|
|
57
|
+
Poi?: any;
|
|
58
|
+
Event?: any;
|
|
59
|
+
Badge?: any;
|
|
60
|
+
News?: any;
|
|
61
|
+
Comment?: any;
|
|
62
|
+
}
|
|
63
|
+
interface BaseEntityConfig {
|
|
64
|
+
entityTag?: string;
|
|
65
|
+
}
|
|
66
|
+
interface EntityTypeMap {
|
|
67
|
+
citoyens: User;
|
|
68
|
+
organizations: Organization;
|
|
69
|
+
projects: Project;
|
|
70
|
+
events: EventEntity;
|
|
71
|
+
poi: Poi;
|
|
72
|
+
news: News;
|
|
73
|
+
badges: Badge;
|
|
74
|
+
comments: Comment;
|
|
75
|
+
}
|
|
76
|
+
type ReadableWithMeta = import("stream").Readable & {
|
|
77
|
+
path?: string;
|
|
78
|
+
mimeType?: string;
|
|
79
|
+
};
|
|
80
|
+
type UploadInput = File | Blob | Buffer | import("stream").Readable;
|
|
81
|
+
type ValidatedUpload = File | Buffer | ReadableWithMeta;
|
|
82
|
+
export interface PaginatorPage<T> {
|
|
83
|
+
count: {
|
|
84
|
+
total: number;
|
|
85
|
+
};
|
|
86
|
+
results: T[];
|
|
87
|
+
pageIndex: number;
|
|
88
|
+
pageNumber: number;
|
|
89
|
+
hasNext: boolean;
|
|
90
|
+
hasPrev: boolean;
|
|
91
|
+
next?: () => Promise<PaginatorPage<T>>;
|
|
92
|
+
prev?: () => Promise<PaginatorPage<T>>;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Type helper pour extraire les noms de méthodes depuis un Map as const
|
|
96
|
+
*
|
|
97
|
+
* @example
|
|
98
|
+
* static UPDATE_BLOCKS = new Map([
|
|
99
|
+
* ["UPDATE_BLOCK_DESCRIPTION", "updateDescription"],
|
|
100
|
+
* ["UPDATE_BLOCK_INFO", "updateInfo"]
|
|
101
|
+
* ] as const);
|
|
102
|
+
*
|
|
103
|
+
* type MethodNames = ExtractMethodNames<typeof MyClass.UPDATE_BLOCKS>;
|
|
104
|
+
* // Result: "updateDescription" | "updateInfo"
|
|
105
|
+
*/
|
|
106
|
+
export type ExtractMethodNames<T> = T extends Map<any, infer V> ? V extends readonly (readonly [any, infer M])[] ? M : never : never;
|
|
107
|
+
interface LinkMeta {
|
|
108
|
+
linkType: "memberOf" | "projects" | "events" | "friends";
|
|
109
|
+
connectTypeConnect: "member" | "contributor" | "attendee" | "friend";
|
|
110
|
+
connectTypeDisconnect: "members" | "contributors" | "attendees" | "friends";
|
|
111
|
+
}
|
|
112
|
+
type BaseEntityCtor = typeof BaseEntity & {
|
|
113
|
+
entityTag: string;
|
|
114
|
+
entityType: "citoyens" | "organizations" | "projects" | "events" | "poi" | "badges" | "news" | "comments";
|
|
115
|
+
SCHEMA_CONSTANTS: string | string[];
|
|
116
|
+
};
|
|
117
|
+
interface FilterValueExistsOnly {
|
|
118
|
+
$exists: boolean;
|
|
119
|
+
}
|
|
120
|
+
interface FilterValueInOnly {
|
|
121
|
+
$in: string[];
|
|
122
|
+
}
|
|
123
|
+
interface FilterValueCombined {
|
|
124
|
+
$in: string[];
|
|
125
|
+
$exists: boolean;
|
|
126
|
+
}
|
|
127
|
+
type FilterValue = FilterValueExistsOnly | FilterValueInOnly | FilterValueCombined;
|
|
128
|
+
type LinkFilters = Record<string, FilterValue>;
|
|
129
|
+
interface MinimalUserLink {
|
|
130
|
+
toBeValidated?: boolean;
|
|
131
|
+
isInviting?: boolean;
|
|
132
|
+
}
|
|
133
|
+
type EntityFilterValue = string | boolean | RegExp | ((value: any) => boolean);
|
|
134
|
+
type EntityFilters = Record<string, EntityFilterValue>;
|
|
135
|
+
interface LinkEntitiesOptions {
|
|
136
|
+
key?: string;
|
|
137
|
+
mapFn?: (entity: any) => any;
|
|
138
|
+
}
|
|
139
|
+
type Deletable = {
|
|
140
|
+
_isDeleted?: boolean;
|
|
141
|
+
};
|
|
142
|
+
type ReactiveData = Record<string, any> & {
|
|
143
|
+
__isReactive?: boolean;
|
|
144
|
+
__raw?: any;
|
|
145
|
+
};
|
|
146
|
+
interface FinalizerResult<TOut> {
|
|
147
|
+
results: TOut[];
|
|
148
|
+
count: {
|
|
149
|
+
total: number;
|
|
150
|
+
} & Record<string, any>;
|
|
151
|
+
}
|
|
152
|
+
type EntityType = "citoyens" | "organizations" | "projects" | "events" | "poi" | "badges" | "news";
|
|
5
153
|
/**
|
|
6
154
|
* Classe de base pour toutes les entités métiers : utilisateurs, projets, organisations, etc.
|
|
7
155
|
* Fournit un système de brouillon (draft), transformation, appel API sécurisé,
|
|
8
156
|
* et gestion de données côté client avec support du mode offline.
|
|
157
|
+
* @template object TServerData
|
|
9
158
|
* @abstract
|
|
10
159
|
*/
|
|
11
|
-
export class BaseEntity {
|
|
160
|
+
export declare class BaseEntity<TServerData = any> {
|
|
161
|
+
__entityTag: string;
|
|
162
|
+
deps: Partial<Deps>;
|
|
163
|
+
apiClient: ApiClient;
|
|
164
|
+
parent: ParentLike | null;
|
|
165
|
+
userContext: User | null;
|
|
166
|
+
endpointApi: EndpointApi;
|
|
167
|
+
data: any;
|
|
168
|
+
meta?: any;
|
|
169
|
+
_draftData: ReactiveData;
|
|
170
|
+
_initialDraftData: Record<string, any>;
|
|
171
|
+
_serverData: TServerData & ReactiveData;
|
|
172
|
+
_calledFromSave: boolean;
|
|
173
|
+
_syncReactiveDraft: boolean;
|
|
174
|
+
_isDeleted: boolean;
|
|
175
|
+
_add?: ((payload: any) => Promise<void | unknown>) | undefined;
|
|
176
|
+
_update?: ((payload: any) => Promise<boolean>) | undefined;
|
|
177
|
+
_allowedFieldsCache?: string[];
|
|
178
|
+
_allowedFieldsMetadata?: {
|
|
179
|
+
combinedSchema: any;
|
|
180
|
+
transforms: TransformsMap;
|
|
181
|
+
removeFields: string[];
|
|
182
|
+
};
|
|
12
183
|
static entityTag: string;
|
|
184
|
+
static entityType?: string;
|
|
185
|
+
static SCHEMA_CONSTANTS?: string | string[];
|
|
13
186
|
/**
|
|
14
|
-
*
|
|
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é.
|
|
187
|
+
* Vérifie que l'objet n'a pas été supprimé.
|
|
188
|
+
* @throws {ApiError} - Si l'objet a été supprimé.
|
|
20
189
|
*/
|
|
21
|
-
|
|
190
|
+
protected _checkNotDeleted(): void;
|
|
22
191
|
/**
|
|
23
|
-
*
|
|
192
|
+
* Constructeur de l'entité.
|
|
24
193
|
*
|
|
25
|
-
*
|
|
26
|
-
*
|
|
27
|
-
|
|
28
|
-
static _revive(obj: any): any;
|
|
29
|
-
/**
|
|
30
|
-
* Crée une instance d'entité à partir de données JSON.
|
|
194
|
+
* `parent` peut être :
|
|
195
|
+
* - une instance d'ApiClient
|
|
196
|
+
* - une instance d'entité (User, Organization, Project, Poi, Event, Badge, News)
|
|
31
197
|
*
|
|
32
|
-
* @param
|
|
33
|
-
* @param
|
|
34
|
-
* @param
|
|
35
|
-
* @
|
|
198
|
+
* @param parent
|
|
199
|
+
* @param data - Données initiales.
|
|
200
|
+
* @param deps - Dépendances injectées (EndpointApi, autres entités).
|
|
201
|
+
* @param config - Configuration optionnelle (ex. `entityTag`).
|
|
202
|
+
* @throws {ApiError} Si `parent` est invalide ou si `deps.EndpointApi` n'est ni une instance ni un constructeur.
|
|
36
203
|
*/
|
|
37
|
-
|
|
204
|
+
constructor(parent: ApiClient | ParentLike, data?: object, deps?: Partial<Deps>, config?: BaseEntityConfig);
|
|
38
205
|
/**
|
|
39
|
-
*
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
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é */
|
|
206
|
+
* Permet de récupérer le constructeur typé correctement.
|
|
207
|
+
*/
|
|
208
|
+
protected _getCtor(): BaseEntityCtor;
|
|
209
|
+
getEntityTag: (__entityTag: string | undefined) => string | undefined;
|
|
210
|
+
/** @returns Identifiant de l'entité */
|
|
103
211
|
get id(): string | null;
|
|
104
|
-
/** @returns
|
|
212
|
+
/** @returns Slug de l'entité */
|
|
105
213
|
get slug(): string | null;
|
|
106
|
-
/**
|
|
107
|
-
|
|
108
|
-
|
|
214
|
+
/**
|
|
215
|
+
* Définit un ID (utilisé en interne)
|
|
216
|
+
* @param newId - Nouvel ID à définir.
|
|
217
|
+
*/
|
|
218
|
+
_id(newId: string): void;
|
|
219
|
+
/** @returns Indique si l'utilisateur est connecté */
|
|
109
220
|
get isConnected(): boolean;
|
|
110
|
-
/** @returns
|
|
221
|
+
/** @returns Identifiant utilisateur associé */
|
|
111
222
|
get userId(): string | null;
|
|
112
|
-
/** @returns
|
|
113
|
-
get draftData():
|
|
114
|
-
/** @returns
|
|
115
|
-
get initialDraftData(): any
|
|
116
|
-
/** @returns
|
|
117
|
-
get serverData():
|
|
118
|
-
/** @returns
|
|
223
|
+
/** @returns Données de brouillon courantes (réactif) */
|
|
224
|
+
get draftData(): ReactiveData;
|
|
225
|
+
/** @returns Données de brouillon initiales (non-réactif) */
|
|
226
|
+
get initialDraftData(): Record<string, any>;
|
|
227
|
+
/** @returns Données brutes du serveur */
|
|
228
|
+
get serverData(): TServerData;
|
|
229
|
+
/** @returns Indique si cette entité représente l'utilisateur connecté */
|
|
119
230
|
get isMe(): boolean;
|
|
120
|
-
/** @returns
|
|
121
|
-
getEntityType():
|
|
231
|
+
/** @returns Type de l'entité (ex: 'citoyens') */
|
|
232
|
+
getEntityType(): "citoyens" | "organizations" | "projects" | "events" | "poi" | "badges" | "news" | "comments";
|
|
122
233
|
/**
|
|
123
234
|
* Indique si le draft contient des modifications par rapport aux données initiales.
|
|
124
235
|
* @returns {boolean}
|
|
@@ -126,46 +237,61 @@ export class BaseEntity {
|
|
|
126
237
|
hasChanges(): boolean;
|
|
127
238
|
/**
|
|
128
239
|
* Rafraîchit l'entité en rechargeant ses données depuis le serveur.
|
|
129
|
-
* @returns
|
|
240
|
+
* @returns Données mises à jour
|
|
130
241
|
*/
|
|
131
|
-
refresh(): Promise<any
|
|
242
|
+
refresh(): Promise<Record<string, any>>;
|
|
132
243
|
/**
|
|
133
244
|
* Sauvegarde les modifications locales vers le serveur (add ou update).
|
|
134
|
-
* @returns
|
|
245
|
+
* @returns Données serveur mises à jour (après éventuel `refresh()`)
|
|
246
|
+
*/
|
|
247
|
+
save(): Promise<Record<string, any>>;
|
|
248
|
+
/**
|
|
249
|
+
* Crée une nouvelle instance d'entité à partir des données du serveur.
|
|
250
|
+
*
|
|
251
|
+
* @param data - Données du serveur.
|
|
252
|
+
* @param parent - Instance parente (ApiClient ou BaseEntity).
|
|
253
|
+
* @param deps - Dépendances injectées (classes d'entités disponibles).
|
|
254
|
+
* @returns Nouvelle instance d'entité.
|
|
255
|
+
*/
|
|
256
|
+
static fromServerData(data: object, parent: ApiClient | ParentLike, deps: object): BaseEntity<any>;
|
|
257
|
+
/**
|
|
258
|
+
* Hook pour transformer les données du serveur avant qu'elles ne soient appliquées.
|
|
259
|
+
* Peut être overridé dans les classes filles pour transformer des champs imbriqués en instances d'entités.
|
|
260
|
+
*
|
|
261
|
+
* @param data - Les données brutes du serveur.
|
|
262
|
+
* @returns Les données transformées.
|
|
263
|
+
* @protected
|
|
135
264
|
*/
|
|
136
|
-
|
|
265
|
+
protected _transformServerData(data: TServerData): TServerData;
|
|
137
266
|
/**
|
|
138
267
|
* Met à jour les données de l'entité avec de nouvelles données.
|
|
139
268
|
*
|
|
140
|
-
* @param
|
|
141
|
-
* @
|
|
142
|
-
* @
|
|
269
|
+
* @param newData - Les nouvelles données à appliquer.
|
|
270
|
+
* @param {{ forceInitialDraftReset?: boolean }} [options]
|
|
271
|
+
* @protected
|
|
143
272
|
*/
|
|
144
|
-
|
|
145
|
-
|
|
273
|
+
protected _setData(newData: TServerData, { forceInitialDraftReset }?: {
|
|
274
|
+
forceInitialDraftReset?: boolean;
|
|
275
|
+
}): void;
|
|
276
|
+
_updateDraftPreservingUserChanges(draft: Record<string, any>): void;
|
|
146
277
|
_resetInitialDraftData(): void;
|
|
147
278
|
_toRawDeep(obj: any): any;
|
|
148
279
|
/**
|
|
149
280
|
* Champs à ajouter automatiquement à chaque draft (ex: `typeElement`).
|
|
150
281
|
* Souvent utilisés dans les conditions `if/then` du JSON Schema.
|
|
151
|
-
* @type {Object<string, any>}
|
|
152
282
|
*/
|
|
153
283
|
defaultFields: {
|
|
154
|
-
[
|
|
284
|
+
[key: string]: any;
|
|
155
285
|
};
|
|
156
286
|
/**
|
|
157
287
|
* Champs à exclure explicitement du draft et des payloads.
|
|
158
|
-
* @type {string[]}
|
|
159
288
|
*/
|
|
160
289
|
removeFields: string[];
|
|
161
290
|
/**
|
|
162
291
|
* Transformations à appliquer à certains champs lors de la lecture depuis le draft.
|
|
163
292
|
* Clé = champ, valeur = fonction (val, full) => valeur transformée.
|
|
164
|
-
* @type {Object<string, function(any, object): any>}
|
|
165
293
|
*/
|
|
166
|
-
transforms:
|
|
167
|
-
[x: string]: (arg0: any, arg1: object) => any;
|
|
168
|
-
};
|
|
294
|
+
transforms: TransformsMap;
|
|
169
295
|
/**
|
|
170
296
|
* ───────────────────────────────
|
|
171
297
|
* JSON
|
|
@@ -174,19 +300,45 @@ export class BaseEntity {
|
|
|
174
300
|
/**
|
|
175
301
|
* Convertit l'instance en JSON pour l'envoi au serveur.
|
|
176
302
|
*
|
|
177
|
-
* @returns
|
|
178
|
-
*/
|
|
179
|
-
toJSON():
|
|
303
|
+
* @returns Représentation JSON de l'instance.
|
|
304
|
+
*/
|
|
305
|
+
toJSON(): {
|
|
306
|
+
__entityTag: string;
|
|
307
|
+
__isSerializedEntity: boolean;
|
|
308
|
+
serverData: any;
|
|
309
|
+
parent: {
|
|
310
|
+
id?: string;
|
|
311
|
+
type?: string;
|
|
312
|
+
__entityTag?: string;
|
|
313
|
+
slug?: string;
|
|
314
|
+
} | null;
|
|
315
|
+
};
|
|
180
316
|
_serialize(obj: any): any;
|
|
181
317
|
/**
|
|
182
318
|
* Supprime les propriétés non sérialisables d'un objet.
|
|
183
319
|
*
|
|
184
|
-
* @param
|
|
185
|
-
* @param
|
|
186
|
-
* @returns
|
|
320
|
+
* @param obj - L'objet à nettoyer.
|
|
321
|
+
* @param seen - Ensemble pour éviter les références circulaires.
|
|
322
|
+
* @returns L'objet nettoyé.
|
|
187
323
|
* @private
|
|
188
324
|
*/
|
|
189
325
|
private _removeUnserializables;
|
|
326
|
+
/**
|
|
327
|
+
* Restaure les données sérialisées en un objet d'origine.
|
|
328
|
+
*
|
|
329
|
+
* @param obj - L'objet à restaurer.
|
|
330
|
+
* @returns L'objet restauré.
|
|
331
|
+
*/
|
|
332
|
+
static _revive(obj: object): any;
|
|
333
|
+
/**
|
|
334
|
+
* Crée une instance d'entité à partir de données JSON.
|
|
335
|
+
*
|
|
336
|
+
* @param json - Données JSON à utiliser.
|
|
337
|
+
* @param parent - Instance parente.
|
|
338
|
+
* @param deps - Dépendances injectées.
|
|
339
|
+
* @returns Nouvelle instance d'entité.
|
|
340
|
+
*/
|
|
341
|
+
static fromJSON(json: unknown, parent?: ApiClient | BaseEntity<any> | null, deps?: object): BaseEntity<any>;
|
|
190
342
|
/**
|
|
191
343
|
* ───────────────────────────────
|
|
192
344
|
* UtilMixin
|
|
@@ -195,74 +347,72 @@ export class BaseEntity {
|
|
|
195
347
|
/**
|
|
196
348
|
* Appelle une méthode de l'API.
|
|
197
349
|
*
|
|
198
|
-
* @param
|
|
199
|
-
* @param
|
|
200
|
-
* @returns
|
|
350
|
+
* @param constant - Le nom de la méthode à appeler.
|
|
351
|
+
* @param data - Les données à passer à la méthode.
|
|
352
|
+
* @returns - `response.data` transformé ; peut être `null` si la requête est **mise en file** (offline/breaker).
|
|
201
353
|
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
202
354
|
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
203
355
|
* @throws {ApiClientError} - Si l'utilisateur n'est pas authentifié.
|
|
204
356
|
*/
|
|
205
|
-
call(constant: string, data?: object): Promise<
|
|
357
|
+
call(constant: string, data?: object): Promise<unknown>;
|
|
206
358
|
/**
|
|
207
359
|
* Appelle une méthode de l'API si l'utilisateur n'est pas connecté.
|
|
208
360
|
*
|
|
209
|
-
* @param
|
|
210
|
-
* @param
|
|
211
|
-
* @returns
|
|
361
|
+
* @param constant - Le nom de la méthode à appeler.
|
|
362
|
+
* @param data - Les données à passer à la méthode.
|
|
363
|
+
* @returns - `response.data` ou `null` si enqueue offline/breaker.
|
|
212
364
|
* @throws {ApiAuthenticationError} - Si l'utilisateur est connecté.
|
|
213
365
|
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
214
366
|
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
215
367
|
* @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
|
|
216
368
|
*/
|
|
217
|
-
callNoConnected(constant: string, data?: object): Promise<
|
|
369
|
+
callNoConnected(constant: string, data?: object): Promise<unknown>;
|
|
218
370
|
/**
|
|
219
371
|
* Appelle une méthode de l'API si l'utilisateur est connecté.
|
|
220
372
|
*
|
|
221
|
-
* @param
|
|
222
|
-
* @param
|
|
223
|
-
* @returns
|
|
373
|
+
* @param param - Le nom de la méthode à appeler ou une fonction de rappel.
|
|
374
|
+
* @param data - Les données à passer à la méthode.
|
|
375
|
+
* @returns - `response.data` ou `null` si enqueue offline/breaker.
|
|
224
376
|
* @throws {ApiAuthenticationError} - Si l'utilisateur n'est pas connecté.
|
|
225
377
|
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
226
378
|
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
227
379
|
* @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
|
|
228
380
|
*/
|
|
229
|
-
callIsConnected(param: string |
|
|
381
|
+
callIsConnected(param: string | (() => Promise<any>), data?: object): Promise<unknown>;
|
|
230
382
|
/**
|
|
231
383
|
* Appelle une méthode de l'API si l'utilisateur est lui-même.
|
|
232
384
|
*
|
|
233
|
-
* @param
|
|
234
|
-
* @param
|
|
235
|
-
* @returns
|
|
385
|
+
* @param param - Le nom de la méthode à appeler ou une fonction de rappel.
|
|
386
|
+
* @param data - Les données à passer à la méthode.
|
|
387
|
+
* @returns - `response.data` ou `null` si enqueue offline/breaker.
|
|
236
388
|
* @throws {ApiAuthenticationError} - Si l'utilisateur n'est pas lui-même.
|
|
237
389
|
* @throws {ApiValidationError} - Si une erreur se produit lors de l'appel de l'API.
|
|
238
390
|
* @throws {ApiResponseError} - Si une erreur se produit lors de l'appel de l'API.
|
|
239
391
|
* @throws {ApiClientError} - Si une erreur se produit lors de l'appel de l'API.
|
|
240
392
|
*/
|
|
241
|
-
callIsMe(param: string |
|
|
393
|
+
callIsMe(param: string | (() => Promise<any>), data?: object): Promise<unknown>;
|
|
242
394
|
/**
|
|
243
395
|
* Valide une image d'entrée.
|
|
244
396
|
*
|
|
245
|
-
* @param
|
|
246
|
-
* @returns
|
|
397
|
+
* @param imageInput - L'image à valider.
|
|
398
|
+
* @returns - L'image validée.
|
|
247
399
|
* @private
|
|
248
400
|
*/
|
|
249
|
-
|
|
401
|
+
protected _validateImage(imageInput: UploadInput): Promise<ValidatedUpload>;
|
|
250
402
|
/**
|
|
251
403
|
* Valide un fichier d'entrée.
|
|
252
404
|
*
|
|
253
|
-
* @param
|
|
254
|
-
* @returns
|
|
405
|
+
* @param fileInput - Le fichier à valider.
|
|
406
|
+
* @returns - Le fichier validé.
|
|
255
407
|
* @private
|
|
256
408
|
*/
|
|
257
|
-
|
|
409
|
+
protected _validateFile(fileInput: UploadInput): Promise<ValidatedUpload>;
|
|
258
410
|
/**
|
|
259
411
|
* Valide les entrées d'upload de fichiers.
|
|
260
412
|
*
|
|
261
|
-
* @param
|
|
262
|
-
* @param {
|
|
263
|
-
* @
|
|
264
|
-
* @param {string} options.expectedType - Type de fichier attendu (ex: "image", "file").
|
|
265
|
-
* @returns {Promise<File|Buffer|ReadableStream>} - Le fichier validé.
|
|
413
|
+
* @param input - Le fichier à valider.
|
|
414
|
+
* @param {{ allowedMimeTypes?: string[], expectedType?: "image"|"file"|"any" }} options - Options de validation.
|
|
415
|
+
* @returns - Le fichier validé.
|
|
266
416
|
* @throws {ApiValidationError} - Si le type de fichier est invalide.
|
|
267
417
|
* @throws {Error} - Si le type de fichier est inconnu.
|
|
268
418
|
* @private
|
|
@@ -270,18 +420,18 @@ export class BaseEntity {
|
|
|
270
420
|
private _validateUploadInput;
|
|
271
421
|
/**
|
|
272
422
|
* Transforme un Buffer en ReadableStream équivalent à fs.createReadStream
|
|
273
|
-
* @param
|
|
274
|
-
* @param
|
|
275
|
-
* @param
|
|
276
|
-
* @returns
|
|
423
|
+
* @param buffer - Le buffer contenant les données binaires
|
|
424
|
+
* @param [filename="file.bin"] - Nom de fichier (utilisé dans FormData)
|
|
425
|
+
* @param [mimeType="application/octet-stream"] - Type MIME (utilisé dans FormData)
|
|
426
|
+
* @returns - Readable doté de `path` et `mimeType`
|
|
277
427
|
* @private
|
|
278
428
|
*/
|
|
279
429
|
private _createReadStreamFromBuffer;
|
|
280
430
|
/**
|
|
281
431
|
* Transforme un Buffer en ReadableStream.
|
|
282
432
|
*
|
|
283
|
-
* @param
|
|
284
|
-
* @returns
|
|
433
|
+
* @param buffer - Le buffer à transformer.
|
|
434
|
+
* @returns - Un ReadableStream.
|
|
285
435
|
* @throws {Error} - Si appelé dans le navigateur.
|
|
286
436
|
* @private
|
|
287
437
|
*/
|
|
@@ -289,7 +439,7 @@ export class BaseEntity {
|
|
|
289
439
|
/**
|
|
290
440
|
* Crée un PassThrough stream pour le traitement des fichiers.
|
|
291
441
|
*
|
|
292
|
-
* @returns
|
|
442
|
+
* @returns - Un PassThrough stream.
|
|
293
443
|
* @throws {Error} - Si appelé dans le navigateur.
|
|
294
444
|
* @private
|
|
295
445
|
*/
|
|
@@ -297,100 +447,139 @@ export class BaseEntity {
|
|
|
297
447
|
/**
|
|
298
448
|
* Supprime les propriétés d'un objet en fonction d'une liste de clés.
|
|
299
449
|
*
|
|
300
|
-
* @param
|
|
301
|
-
* @param
|
|
302
|
-
* @
|
|
303
|
-
* @returns {Object} - Un nouvel objet sans les propriétés supprimées.
|
|
450
|
+
* @param obj - L'objet source.
|
|
451
|
+
* @param propsToRemove - Liste des clés à supprimer
|
|
452
|
+
* @returns - Un nouvel objet sans les propriétés supprimées.
|
|
304
453
|
* @private
|
|
305
454
|
*/
|
|
306
455
|
private _omitProps;
|
|
307
456
|
/**
|
|
308
457
|
* Extrait les propriétés d'un objet en fonction d'une liste de clés.
|
|
309
458
|
*
|
|
310
|
-
* @param
|
|
311
|
-
* @param
|
|
312
|
-
* @param
|
|
313
|
-
* @returns
|
|
459
|
+
* @param obj - L'objet source.
|
|
460
|
+
* @param keys - Liste des clés à extraire.
|
|
461
|
+
* @param [transforms={}] - Transformations à appliquer aux valeurs.
|
|
462
|
+
* @returns - Un nouvel objet contenant les propriétés extraites.
|
|
314
463
|
* @private
|
|
315
464
|
*/
|
|
316
465
|
private _pickProps;
|
|
317
466
|
/**
|
|
318
467
|
* Vérifie si au moins une clé est présente dans l'objet et n'est pas nulle.
|
|
319
468
|
*
|
|
320
|
-
* @param
|
|
321
|
-
* @param
|
|
322
|
-
* @returns
|
|
469
|
+
* @param obj - L'objet à vérifier.
|
|
470
|
+
* @param keys - Liste des clés à vérifier.
|
|
471
|
+
* @returns - true si au moins une clé est présente et non nulle, sinon false.
|
|
323
472
|
* @private
|
|
324
473
|
*/
|
|
325
474
|
private _hasAtLeastOne;
|
|
326
475
|
/**
|
|
327
476
|
* 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
477
|
* @private
|
|
331
478
|
*/
|
|
332
|
-
|
|
479
|
+
_createFilteredProxy<T extends Deletable>(list: T[]): T[];
|
|
333
480
|
/**
|
|
334
481
|
* Génère un nouvel identifiant unique.
|
|
335
|
-
* @returns
|
|
336
|
-
* @
|
|
482
|
+
* @returns Un identifiant unique.
|
|
483
|
+
* @protected
|
|
337
484
|
*/
|
|
338
|
-
|
|
485
|
+
protected _newId(): string;
|
|
339
486
|
/**
|
|
340
487
|
* ───────────────────────────────
|
|
341
488
|
* DraftStateMixin
|
|
342
489
|
* ───────────────────────────────
|
|
343
490
|
*/
|
|
491
|
+
/**
|
|
492
|
+
* Recalcule les champs autorisés en fonction de l'état actuel du draft.
|
|
493
|
+
* Utilisé pour validation dynamique dans le proxy this.data.
|
|
494
|
+
* @returns Liste des champs autorisés
|
|
495
|
+
* @private
|
|
496
|
+
*/
|
|
497
|
+
private _getAllowedFieldsForCurrentState;
|
|
344
498
|
/**
|
|
345
499
|
* Crée un proxy combinant draft + serveur, avec transformations facultatives.
|
|
346
|
-
* @param
|
|
347
|
-
* @param {
|
|
348
|
-
* @param {
|
|
349
|
-
* @param
|
|
350
|
-
* @param
|
|
351
|
-
* @
|
|
500
|
+
* @param apiClient
|
|
501
|
+
* @param [server={}]
|
|
502
|
+
* @param [draft={}]
|
|
503
|
+
* @param _allowedFields - champs autorisés dans le draft (fallback si pas de metadata)
|
|
504
|
+
* @param [transforms={}] - transformateurs de lecture
|
|
505
|
+
* @param {{ throwOnError?: boolean }} [options={}] - options
|
|
506
|
+
* @param [entity=this] - référence à l'entité pour recalcul dynamique
|
|
507
|
+
* @returns {object}
|
|
352
508
|
* @private
|
|
353
509
|
*/
|
|
354
510
|
private _createDraftProxy;
|
|
355
511
|
/**
|
|
356
512
|
* Extrait les champs modifiables d'un schéma JSON.
|
|
357
513
|
*
|
|
358
|
-
* @param
|
|
359
|
-
* @param
|
|
360
|
-
* @param
|
|
361
|
-
* @param
|
|
362
|
-
* @param
|
|
363
|
-
* @returns
|
|
514
|
+
* @param schema - Le schéma JSON à analyser.
|
|
515
|
+
* @param data - Les données à comparer.
|
|
516
|
+
* @param ctx - Contexte d'extraction (pour la récursion).
|
|
517
|
+
* @param ctx.defs - Définitions de schéma.
|
|
518
|
+
* @param ctx.visited - Ensemble des schémas déjà visités.
|
|
519
|
+
* @returns Liste des champs modifiables (propriétés `writeable` implicites).
|
|
364
520
|
* @private
|
|
365
521
|
*/
|
|
366
522
|
private _extractWritableFields;
|
|
367
523
|
/**
|
|
368
524
|
* Construit un brouillon et un proxy à partir des données et du schéma.
|
|
369
525
|
*
|
|
370
|
-
* @param
|
|
371
|
-
* @param
|
|
372
|
-
* @param
|
|
373
|
-
* @param
|
|
374
|
-
* @param
|
|
375
|
-
* @param
|
|
376
|
-
* @param
|
|
377
|
-
* @param
|
|
378
|
-
* @
|
|
526
|
+
* @param options - Options de construction.
|
|
527
|
+
* @param options.data - Données à utiliser pour le brouillon.
|
|
528
|
+
* @param options.serverData - Données du serveur.
|
|
529
|
+
* @param options.previousDraft - Brouillon précédent pour la réactivité.
|
|
530
|
+
* @param options.constant - Nom de la constante ou tableau de constantes.
|
|
531
|
+
* @param options.apiClient - Instance de l'API.
|
|
532
|
+
* @param options.transforms - Transformations à appliquer.
|
|
533
|
+
* @param options.throwOnError - Si vrai, lève une erreur en cas de problème.
|
|
534
|
+
* @param options.removeFields - Liste des champs à ignorer.
|
|
535
|
+
* @returns Draft réactif, proxy combiné, snapshot initial.
|
|
379
536
|
* @private
|
|
380
537
|
*/
|
|
381
538
|
private _buildDraftAndProxy;
|
|
539
|
+
/**
|
|
540
|
+
* Invoque une méthode de bloc de manière type-safe.
|
|
541
|
+
* Élimine le besoin de casts `as any` dans les classes dérivées.
|
|
542
|
+
*
|
|
543
|
+
* @param blocks - Le Map contenant les noms de méthodes (doit être `as const`)
|
|
544
|
+
* @param methodName - Le nom de la méthode à invoquer
|
|
545
|
+
* @param blockData - Les données à passer à la méthode
|
|
546
|
+
* @returns La valeur retournée par la méthode
|
|
547
|
+
* @protected
|
|
548
|
+
*
|
|
549
|
+
* @example
|
|
550
|
+
* // Dans une classe dérivée :
|
|
551
|
+
* await this._invokeBlockMethod(User.UPDATE_BLOCKS, methodName, blockData);
|
|
552
|
+
*/
|
|
553
|
+
protected _invokeBlockMethod<T extends Map<string, any>>(blocks: T, methodName: string, blockData: any): Promise<any>;
|
|
382
554
|
/**
|
|
383
555
|
* Extrait les champs modifiés du schéma.
|
|
384
556
|
*
|
|
385
|
-
* @param
|
|
386
|
-
* @param
|
|
387
|
-
* @param
|
|
388
|
-
* @param
|
|
389
|
-
* @param
|
|
390
|
-
* @returns
|
|
557
|
+
* @param apiClient - Instance de l'API.
|
|
558
|
+
* @param constant - Nom de la constante.
|
|
559
|
+
* @param data - Données à comparer.
|
|
560
|
+
* @param getInitialDraft - Fonction pour obtenir le brouillon initial.
|
|
561
|
+
* @param removeFields - Liste des champs à ignorer.
|
|
562
|
+
* @returns - Champs modifiés ou `null` si aucun changement.
|
|
563
|
+
* @protected
|
|
564
|
+
*/
|
|
565
|
+
/**
|
|
566
|
+
* Détecte si une valeur est un type d'upload (Buffer, File, Blob, Stream)
|
|
567
|
+
* @param obj - La valeur à tester
|
|
568
|
+
* @returns true si c'est un type d'upload
|
|
569
|
+
* @private
|
|
570
|
+
*/
|
|
571
|
+
private _isUploadType;
|
|
572
|
+
/**
|
|
573
|
+
* Compare deux valeurs de manière intelligente :
|
|
574
|
+
* - Types d'upload (Buffer, File, etc.) : comparaison par référence
|
|
575
|
+
* - Autres types : comparaison JSON
|
|
576
|
+
* @param current - Valeur actuelle
|
|
577
|
+
* @param initial - Valeur initiale
|
|
578
|
+
* @returns true si les valeurs sont différentes
|
|
391
579
|
* @private
|
|
392
580
|
*/
|
|
393
|
-
private
|
|
581
|
+
private _compareValues;
|
|
582
|
+
_extractChangedFieldsFromSchema(apiClient: ApiClient, constant: string, data: Record<string, any> | undefined, getInitialDraft: () => Record<string, any> | void, removeFields?: string[]): Record<string, any> | null;
|
|
394
583
|
/**
|
|
395
584
|
* Extrait tous les champs valides selon le schéma, et retourne uniquement ceux qui ont changé par rapport au draft initial.
|
|
396
585
|
* Contrairement à `_extractChangedFieldsFromSchema`, cette méthode retourne l'ensemble des champs valides (`updated`)
|
|
@@ -401,15 +590,15 @@ export class BaseEntity {
|
|
|
401
590
|
* - des champs non exclus dans `removeFields`
|
|
402
591
|
* - des champs définis dans `data` (les `undefined` sont ignorés)
|
|
403
592
|
*
|
|
404
|
-
* @param
|
|
405
|
-
* @param
|
|
406
|
-
* @param
|
|
407
|
-
* @param
|
|
408
|
-
* @param
|
|
409
|
-
* @returns
|
|
593
|
+
* @param apiClient - L'instance de client API contenant les schémas.
|
|
594
|
+
* @param constant - Le nom de la constante de schéma (ex: "ADD_EVENT").
|
|
595
|
+
* @param data - Les nouvelles données à comparer avec le draft initial.
|
|
596
|
+
* @param getInitialDraft - Fonction qui retourne le draft initial (souvent `this.initialDraftData`).
|
|
597
|
+
* @param removeFields - Champs à ignorer même s'ils sont valides.
|
|
598
|
+
* @returns - Un objet `updated` avec les champs valides si au moins un champ a changé, sinon `null`.
|
|
410
599
|
* @private
|
|
411
600
|
*/
|
|
412
|
-
|
|
601
|
+
_extractAllValidFieldsFromSchema(apiClient: ApiClient, constant: string, data: Record<string, any> | undefined, getInitialDraft: () => Record<string, any>, removeFields?: string[]): Record<string, any> | null;
|
|
413
602
|
/**
|
|
414
603
|
* ───────────────────────────────
|
|
415
604
|
* MutualEntityMixin
|
|
@@ -417,69 +606,81 @@ export class BaseEntity {
|
|
|
417
606
|
*/
|
|
418
607
|
/**
|
|
419
608
|
* Résout l'identifiant de l'entité si seul le slug est fourni.
|
|
420
|
-
* @param
|
|
421
|
-
* @returns
|
|
609
|
+
* @param type - Le type d'entité (ex : "citoyens", "organizations", "projects").
|
|
610
|
+
* @returns L'identifiant résolu.
|
|
611
|
+
* @throws {ApiResponseError} - Si le slug ne correspond pas à l'entité attendue.
|
|
612
|
+
* @throws {ApiError} - Si l'identifiant ne peut pas être résolu.
|
|
613
|
+
* @throws {ApiResponseError} - Si une erreur se produit lors de la récupération
|
|
422
614
|
* @private
|
|
423
615
|
*/
|
|
424
616
|
private _resolveId;
|
|
425
617
|
/**
|
|
426
618
|
* Récupère le profil public de l'entité.
|
|
427
619
|
*
|
|
428
|
-
* @returns
|
|
429
|
-
* @
|
|
620
|
+
* @returns - Les données du profil public.
|
|
621
|
+
* @protected
|
|
430
622
|
*/
|
|
431
|
-
|
|
623
|
+
protected _getPublicProfile(): Promise<Record<string, any>>;
|
|
432
624
|
/**
|
|
433
625
|
* Récupère la classe d'entité et ses dépendances à partir du type d'entité.
|
|
434
626
|
*
|
|
435
|
-
* @param {string} entityType - Le type d'entité.
|
|
436
|
-
* @return {{ entityClass: Function, deps: Object } | null}
|
|
437
627
|
* @private
|
|
438
628
|
*/
|
|
439
629
|
private _getEntityMeta;
|
|
440
630
|
/**
|
|
441
631
|
* Lier des données d'entité à une instance d'entité.
|
|
442
632
|
*
|
|
443
|
-
* @param
|
|
444
|
-
* @param
|
|
445
|
-
* @return
|
|
633
|
+
* @param entityType - Le type d'entité (ex : "citoyens", "organisations", "projets").
|
|
634
|
+
* @param entityData - Les données de l'entité à lier.
|
|
635
|
+
* @return L'entité liée ou les données brutes si la metadata n'existe pas.
|
|
446
636
|
* @private
|
|
447
637
|
*/
|
|
448
|
-
|
|
638
|
+
_linkEntity(entityType: string, entityData: object): AnyEntity | object;
|
|
639
|
+
/**
|
|
640
|
+
* Transforme un objet imbriqué avec {id, type} en instance d'entité.
|
|
641
|
+
* Utilisé pour transformer des champs comme author, target, etc.
|
|
642
|
+
*
|
|
643
|
+
* @param obj - L'objet à transformer (doit avoir au minimum {id, type}).
|
|
644
|
+
* @returns L'instance d'entité ou l'objet original si la transformation échoue.
|
|
645
|
+
* @protected
|
|
646
|
+
*/
|
|
647
|
+
protected _linkNestedEntity<T = any>(obj: any): T | any;
|
|
449
648
|
/**
|
|
450
649
|
* Récupère et lie une entité à partir de son ID.
|
|
451
650
|
*
|
|
452
|
-
* @param
|
|
453
|
-
* @param
|
|
454
|
-
* @param
|
|
455
|
-
* @param
|
|
456
|
-
* @return
|
|
651
|
+
* @param entityType - Le type d'entité.
|
|
652
|
+
* @param entityId - L'identifiant de l'entité.
|
|
653
|
+
* @param options - Options supplémentaires :
|
|
654
|
+
* @param options.skipGet - Si true, ne pas appeler `get()` sur l'entité.
|
|
655
|
+
* @return L'entité liée ou null.
|
|
457
656
|
* @private
|
|
458
657
|
*/
|
|
459
|
-
|
|
658
|
+
_linkEntityById(entityType: string, entityId: string, options?: {
|
|
659
|
+
skipGet?: boolean;
|
|
660
|
+
}): Promise<AnyEntity | null>;
|
|
460
661
|
/**
|
|
461
662
|
* Lie une liste d'entités à partir de leurs données.
|
|
462
663
|
*
|
|
463
|
-
* @param
|
|
464
|
-
* @return
|
|
664
|
+
* @param results - Liste de données d'entités.
|
|
665
|
+
* @return Liste d'entités liées.
|
|
465
666
|
* @private
|
|
466
667
|
*/
|
|
467
|
-
|
|
668
|
+
protected _linkEntities(results: any[]): any[];
|
|
468
669
|
/**
|
|
469
670
|
* Lie des entités présentes dans `this.serverData` à partir de leurs IDs,
|
|
470
671
|
* en les filtrant dynamiquement et en optionnellement les transformant.
|
|
471
672
|
*
|
|
472
|
-
* @param
|
|
473
|
-
* @param
|
|
673
|
+
* @param entityType - Le type d'entité (ex : "badges", "citoyens", etc.).
|
|
674
|
+
* @param filters - Clés/valeurs de filtres dynamiques. Les valeurs peuvent être :
|
|
474
675
|
* - un littéral (comparaison stricte ou intelligente selon le type),
|
|
475
676
|
* - une chaîne (utilise `includes` insensible à la casse),
|
|
476
677
|
* - une RegExp (appliquée si la valeur est une chaîne),
|
|
477
678
|
* - une fonction `(value) => boolean`.
|
|
478
|
-
* @param
|
|
479
|
-
* @param
|
|
480
|
-
* @param
|
|
679
|
+
* @param options - Options supplémentaires :
|
|
680
|
+
* @param options.key - Le champ de `this.serverData` à utiliser (par défaut = entityType).
|
|
681
|
+
* @param options.mapFn - Fonction de transformation `(entity) => any` appliquée au résultat.
|
|
481
682
|
*
|
|
482
|
-
* @return
|
|
683
|
+
* @return Liste des entités liées, filtrées et éventuellement transformées.
|
|
483
684
|
*
|
|
484
685
|
* @example
|
|
485
686
|
* // Tous les badges avec `name` contenant "codev"
|
|
@@ -504,79 +705,82 @@ export class BaseEntity {
|
|
|
504
705
|
* mapFn: (badge) => badge.meta.name
|
|
505
706
|
* });
|
|
506
707
|
*/
|
|
507
|
-
linkEntitiesFromServerData(entityType: string, filters?:
|
|
508
|
-
key?: string;
|
|
509
|
-
mapFn?: Function;
|
|
510
|
-
}): Promise<Array<any>>;
|
|
708
|
+
linkEntitiesFromServerData(entityType: string, filters?: EntityFilters, options?: LinkEntitiesOptions): Promise<any[]>;
|
|
511
709
|
/**
|
|
512
710
|
* Crée une instance d'entité à partir des données fournies.
|
|
513
|
-
* @
|
|
514
|
-
* @param
|
|
515
|
-
* @
|
|
711
|
+
* @template keyof EntityTypeMap T
|
|
712
|
+
* @param entityType
|
|
713
|
+
* @param entityData
|
|
714
|
+
* @return {EntityTypeMap[T]}
|
|
516
715
|
* @private
|
|
517
716
|
*/
|
|
518
|
-
|
|
717
|
+
_entityInstanceData<T extends keyof EntityTypeMap>(entityType: T, entityData: object): EntityTypeMap[T];
|
|
519
718
|
/**
|
|
520
719
|
* Crée une instance d'entité, et déclenche get() si certaines propriétés sont présentes.
|
|
521
|
-
* @
|
|
522
|
-
* @param
|
|
523
|
-
* @
|
|
720
|
+
* @template keyof EntityTypeMap T
|
|
721
|
+
* @param entityType
|
|
722
|
+
* @param [entityData={}]
|
|
723
|
+
* @return {Promise<EntityTypeMap[T]>}
|
|
524
724
|
*/
|
|
525
|
-
entity(entityType:
|
|
725
|
+
entity<T extends keyof EntityTypeMap>(entityType: T, entityData?: object): Promise<EntityTypeMap[T]>;
|
|
526
726
|
/**
|
|
527
727
|
* Récupère et lie une entité à partir de son slug.
|
|
528
|
-
* @param
|
|
529
|
-
* @return
|
|
728
|
+
* @param slug - Le slug de l'entité.
|
|
729
|
+
* @return L'entité liée.
|
|
730
|
+
* @throws {ApiError} Si le slug est vide.
|
|
731
|
+
* @throws {ApiResponseError} Si le slug n'existe pas ou est invalide.
|
|
530
732
|
*/
|
|
531
|
-
entityBySlug(slug: string): Promise<
|
|
733
|
+
entityBySlug(slug: string): Promise<AnyEntity>;
|
|
532
734
|
/**
|
|
533
735
|
* Construit dynamiquement des filtres sur un lien entre entités
|
|
534
736
|
*
|
|
535
|
-
* @param
|
|
536
|
-
* @param
|
|
537
|
-
* @param
|
|
538
|
-
* @param
|
|
539
|
-
* @param
|
|
540
|
-
* @param
|
|
541
|
-
* @param
|
|
542
|
-
* @param
|
|
543
|
-
* @returns
|
|
737
|
+
* @param id - L'ID de l'entité cible.
|
|
738
|
+
* @param options - Options de filtrage.
|
|
739
|
+
* @param options.linkType - Le type de lien (ex: "memberOf", "projects", etc.).
|
|
740
|
+
* @param options.isAdmin - Si défini, filtre selon l'existence de isAdmin.
|
|
741
|
+
* @param options.isAdminPending - Si défini, filtre selon l'existence de isAdminPending.
|
|
742
|
+
* @param options.isInviting - Si défini, filtre selon l'existence de isInviting.
|
|
743
|
+
* @param options.toBeValidated - Si défini, filtre selon l'existence de toBeValidated.
|
|
744
|
+
* @param options.roles - Rôles à filtrer.
|
|
745
|
+
* @returns - Un objet de filtres à passer à une requête.
|
|
544
746
|
* @throws {TypeError} - Si les types des paramètres ne sont pas valides.
|
|
545
|
-
* @
|
|
747
|
+
* @protected
|
|
546
748
|
*/
|
|
547
|
-
|
|
749
|
+
_buildLinkFilters(id: string | null, { linkType, isAdmin, isAdminPending, isInviting, toBeValidated, roles }: {
|
|
750
|
+
linkType: "memberOf" | "projects" | "events";
|
|
751
|
+
isAdmin?: boolean;
|
|
752
|
+
isAdminPending?: boolean;
|
|
753
|
+
isInviting?: boolean;
|
|
754
|
+
toBeValidated?: boolean;
|
|
755
|
+
roles?: string[];
|
|
756
|
+
}): LinkFilters;
|
|
548
757
|
/**
|
|
549
758
|
* Retourne les métadonnées de lien pour une entité :
|
|
550
759
|
* - `linkType` : clé dans `serverData.links`
|
|
551
760
|
* - `connectTypeConnect` : valeur envoyée pour `connect()`
|
|
552
761
|
* - `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
762
|
* @throws {ApiError} - Si le type d'entité est inconnu.
|
|
559
|
-
* @
|
|
763
|
+
* @protected
|
|
560
764
|
*/
|
|
561
|
-
|
|
765
|
+
protected _getLinkMeta(): LinkMeta;
|
|
562
766
|
/**
|
|
563
767
|
* Vérifie si l'entité prend en charge les opérations de lien (`connect`, `disconnect`, etc.).
|
|
564
768
|
* Utilise `_getLinkMeta()` comme source unique de vérité.
|
|
565
769
|
*
|
|
566
770
|
* @throws {ApiError} - Si l'entité ne supporte pas les liens.
|
|
567
|
-
* @
|
|
771
|
+
* @protected
|
|
568
772
|
*/
|
|
569
|
-
|
|
773
|
+
protected _checkLinkableEntity(): void;
|
|
570
774
|
/**
|
|
571
775
|
* Retourne le lien de l'utilisateur connecté avec l'entité cible (dans `parent.serverData.links`)
|
|
572
|
-
* @
|
|
776
|
+
* @protected
|
|
573
777
|
*/
|
|
574
|
-
|
|
778
|
+
protected _getLinkFromConnectedUser(): import("./serverDataType/common.js").LinkProjectRef | import("./serverDataType/common.js").LinkEventsRef | import("./serverDataType/common.js").LinkfriendsRef | import("./serverDataType/common.js").LinkMemberOfUserRef | null;
|
|
575
779
|
/**
|
|
576
780
|
* Soumet une demande de connexion à une entité (ex : membre, contributeur),
|
|
577
781
|
* ou valide l'invitation si elle existe déjà.
|
|
578
782
|
*
|
|
579
|
-
* @returns
|
|
783
|
+
* @returns - Résultat de l'API
|
|
580
784
|
* @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
|
|
581
785
|
* @private
|
|
582
786
|
*/
|
|
@@ -592,7 +796,7 @@ export class BaseEntity {
|
|
|
592
796
|
/**
|
|
593
797
|
* Accepte une demande de lien (ex : invitation à rejoindre un groupe).
|
|
594
798
|
*
|
|
595
|
-
* @returns
|
|
799
|
+
* @returns - Résultat de l'API
|
|
596
800
|
* @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
|
|
597
801
|
* @private
|
|
598
802
|
*/
|
|
@@ -600,7 +804,7 @@ export class BaseEntity {
|
|
|
600
804
|
/**
|
|
601
805
|
* Annule une demande de lien ou se déconnecte d'une entité.
|
|
602
806
|
*
|
|
603
|
-
* @returns
|
|
807
|
+
* @returns - Résultat de l'API
|
|
604
808
|
* @throws {ApiError} - En cas d'erreur de connexion ou d'invitation.
|
|
605
809
|
* @private
|
|
606
810
|
*/
|
|
@@ -613,245 +817,257 @@ export class BaseEntity {
|
|
|
613
817
|
/**
|
|
614
818
|
* Récupérer le profil public de l'entité
|
|
615
819
|
*
|
|
616
|
-
* @returns
|
|
820
|
+
* @returns - Les données de réponse.
|
|
617
821
|
*/
|
|
618
|
-
get(): Promise<any
|
|
822
|
+
get(): Promise<Record<string, any>>;
|
|
619
823
|
/**
|
|
620
824
|
* Mettre à jour les paramètres d'un élément : Mise à jour des paramètres spécifiques d'un élément.
|
|
621
825
|
* Constant : UPDATE_SETTINGS
|
|
622
|
-
* @param
|
|
623
|
-
* @
|
|
624
|
-
* @param {undefined} data.value - data.value
|
|
625
|
-
* @returns {Promise<Object>} - Les données de réponse.
|
|
826
|
+
* @param data
|
|
827
|
+
* @returns - Les données de réponse.
|
|
626
828
|
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
627
829
|
* @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
|
|
628
830
|
* @throws {Error} - En cas d'erreur inattendue.
|
|
629
831
|
*/
|
|
630
|
-
updateSettings(data
|
|
631
|
-
type: string;
|
|
632
|
-
value: undefined;
|
|
633
|
-
}): Promise<any>;
|
|
832
|
+
updateSettings(data: Omit<UpdateSettingsData, "idEntity" | "typeEntity">): Promise<unknown>;
|
|
634
833
|
/**
|
|
635
834
|
* Mettre à jour la description d'un élément : Permet de mettre à jour la description courte et complète d'un élément.
|
|
636
835
|
* Constant : UPDATE_BLOCK_DESCRIPTION
|
|
637
|
-
* @param
|
|
638
|
-
* @
|
|
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.
|
|
836
|
+
* @param data - Les données à envoyer.
|
|
837
|
+
* @returns - Les données de réponse.
|
|
642
838
|
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
643
839
|
* @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
|
|
644
840
|
* @throws {Error} - En cas d'erreur inattendue.
|
|
645
841
|
*/
|
|
646
|
-
updateDescription(data
|
|
647
|
-
descMentions: string;
|
|
648
|
-
shortDescription: string;
|
|
649
|
-
description: string;
|
|
650
|
-
}): Promise<any>;
|
|
842
|
+
updateDescription(data: Omit<UpdateBlockDescriptionData, "id" | "typeElement" | "block">): Promise<unknown>;
|
|
651
843
|
/**
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
655
|
-
|
|
844
|
+
* Mettre à jour les informations d'un élément : Permet de mettre à jour les informations générales d'un élément (nom, contacts, etc.).
|
|
845
|
+
* Constant : UPDATE_BLOCK_INFO
|
|
846
|
+
* @param data - Les données à envoyer.
|
|
847
|
+
* @returns - Les données de réponse.
|
|
848
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
849
|
+
* @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
|
|
850
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
851
|
+
*/
|
|
852
|
+
updateInfo(data: Omit<UpdateBlockInfoData, "id" | "typeElement" | "block">): Promise<unknown>;
|
|
656
853
|
/**
|
|
657
854
|
* 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
855
|
* Constant : UPDATE_BLOCK_SOCIAL
|
|
856
|
+
* @param data - Les données à envoyer.
|
|
857
|
+
* @returns - Les données de réponse.
|
|
858
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
859
|
+
* @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
|
|
860
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
861
|
+
*/
|
|
862
|
+
updateSocial(data: Omit<UpdateBlockSocialData, "id" | "typeElement" | "block">): Promise<unknown>;
|
|
863
|
+
/**
|
|
864
|
+
* @private
|
|
865
|
+
*/
|
|
866
|
+
private _isPostalAddress;
|
|
867
|
+
/**
|
|
868
|
+
* @private
|
|
659
869
|
*/
|
|
660
|
-
|
|
870
|
+
private _isGeo;
|
|
871
|
+
/**
|
|
872
|
+
* @private
|
|
873
|
+
*/
|
|
874
|
+
private _isGeoPosition;
|
|
661
875
|
/**
|
|
662
876
|
* 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
877
|
* Constant : UPDATE_BLOCK_LOCALITY
|
|
878
|
+
* @param data - Les données à envoyer.
|
|
879
|
+
* @returns - Les données de réponse.
|
|
880
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
881
|
+
* @throws {ApiAuthenticationError} - En cas d'erreur d'authentification.
|
|
882
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
664
883
|
*/
|
|
665
|
-
updateLocality(data
|
|
884
|
+
updateLocality(data: Omit<UpdateBlockLocalityData, "id" | "typeElement" | "block">): Promise<unknown>;
|
|
666
885
|
/**
|
|
667
886
|
* Mettre à jour le slug d'un élément : Permet de mettre à jour le slug pour une URL simplifiée.
|
|
668
887
|
* Constant : UPDATE_BLOCK_SLUG
|
|
669
|
-
* @param
|
|
670
|
-
* @param
|
|
671
|
-
* @returns
|
|
888
|
+
* @param data - Les données à envoyer.
|
|
889
|
+
* @param data.slug - Le nouveau slug à appliquer.
|
|
890
|
+
* @returns - Les données de réponse.
|
|
672
891
|
*/
|
|
673
892
|
updateSlug({ slug }: {
|
|
674
893
|
slug: string;
|
|
675
|
-
}): Promise<
|
|
894
|
+
}): Promise<unknown>;
|
|
676
895
|
/**
|
|
677
896
|
* Mettre à jour l'image de profil : Permet de mettre à jour l'image de profil d'un utilisateur ou d'une entité.
|
|
678
897
|
* Constant : PROFIL_IMAGE
|
|
679
|
-
* @param
|
|
680
|
-
* @param
|
|
681
|
-
* @returns
|
|
898
|
+
* @param data - Les données à envoyer.
|
|
899
|
+
* @param data.profil_avatar - L'image de profil à mettre à jour.
|
|
900
|
+
* @returns - Les données de réponse.
|
|
682
901
|
*/
|
|
683
902
|
updateImageProfil({ profil_avatar: image }: {
|
|
684
|
-
profil_avatar:
|
|
685
|
-
}): Promise<
|
|
903
|
+
profil_avatar: UploadInput;
|
|
904
|
+
}): Promise<unknown>;
|
|
686
905
|
/**
|
|
687
906
|
* Crée une instance d'organisation et récupère son profil si nécessaire.
|
|
688
907
|
*
|
|
689
|
-
* @param
|
|
690
|
-
*
|
|
908
|
+
* @param organizationData - Les données pour initialiser l'organisation.
|
|
909
|
+
* - Si { id } ou { slug } : récupère l'organisation existante (GET)
|
|
910
|
+
* - Sinon : crée une nouvelle instance (CREATE)
|
|
911
|
+
* @returns Une promesse qui résout l'objet Organisation créé.
|
|
691
912
|
* @throws {Error} Si une erreur se produit lors de la création de l'organisation.
|
|
692
913
|
*/
|
|
693
|
-
organization(organizationData?:
|
|
914
|
+
organization(organizationData?: OrganizationInput): Promise<Organization>;
|
|
694
915
|
/**
|
|
695
916
|
* Crée une instance de projet et récupère son profil si nécessaire.
|
|
696
917
|
*
|
|
697
|
-
* @param
|
|
698
|
-
*
|
|
918
|
+
* @param projectData - Les données pour initialiser le projet.
|
|
919
|
+
* - Si { id } ou { slug } : récupère le projet existant (GET)
|
|
920
|
+
* - Sinon : crée une nouvelle instance (CREATE)
|
|
921
|
+
* @returns Une promesse qui résout l'objet Projet créé.
|
|
699
922
|
* @throws {Error} Si une erreur se produit lors de la création du projet.
|
|
700
923
|
*/
|
|
701
|
-
project(projectData?:
|
|
924
|
+
project(projectData?: ProjectInput): Promise<Project>;
|
|
702
925
|
/**
|
|
703
926
|
* Crée une instance de POI et la récupère si nécessaire.
|
|
704
927
|
*
|
|
705
|
-
* @param
|
|
706
|
-
*
|
|
928
|
+
* @param poiData - Les données pour initialiser le POI.
|
|
929
|
+
* - Si { id } ou { slug } : récupère le POI existant (GET)
|
|
930
|
+
* - Sinon : crée une nouvelle instance (CREATE)
|
|
931
|
+
* @returns Une promesse qui résout l'objet POI créé.
|
|
707
932
|
* @throws {Error} Si une erreur se produit lors de la création du POI.
|
|
708
933
|
*/
|
|
709
|
-
poi(poiData?:
|
|
934
|
+
poi(poiData?: PoiInput): Promise<Poi>;
|
|
710
935
|
/**
|
|
711
936
|
* Crée une instance d'événement et la récupère si nécessaire.
|
|
712
937
|
*
|
|
713
|
-
* @param
|
|
714
|
-
*
|
|
938
|
+
* @param eventData - Les données pour initialiser l'événement.
|
|
939
|
+
* - Si { id } ou { slug } : récupère l'événement existant (GET)
|
|
940
|
+
* - Sinon : crée une nouvelle instance (CREATE)
|
|
941
|
+
* @returns Une promesse qui résout l'objet Événement créé.
|
|
715
942
|
* @throws {Error} Si une erreur se produit lors de la création de l'événement.
|
|
716
943
|
*/
|
|
717
|
-
event(eventData?:
|
|
944
|
+
event(eventData?: EventInput): Promise<EventEntity>;
|
|
718
945
|
/**
|
|
719
946
|
* Crée une instance de badge et la récupère si nécessaire.
|
|
720
947
|
*
|
|
721
|
-
* @param
|
|
722
|
-
*
|
|
948
|
+
* @param badgeData - Les données pour initialiser le badge.
|
|
949
|
+
* - Si { id } : récupère le badge existant (GET)
|
|
950
|
+
* - Sinon : crée une nouvelle instance (CREATE)
|
|
951
|
+
* @returns Une promesse qui résout l'objet Badge créé.
|
|
723
952
|
* @throws {Error} Si une erreur se produit lors de la création du badge.
|
|
724
953
|
*/
|
|
725
|
-
badge(badgeData?:
|
|
954
|
+
badge(badgeData?: BadgeInput): Promise<Badge>;
|
|
726
955
|
/**
|
|
727
956
|
* Crée une instance de news et la récupère si nécessaire.
|
|
728
957
|
*
|
|
729
|
-
* @param
|
|
730
|
-
*
|
|
958
|
+
* @param newsData - Les données pour initialiser la news.
|
|
959
|
+
* - Si { id } : récupère la news existante (GET)
|
|
960
|
+
* - Sinon : crée une nouvelle instance (CREATE)
|
|
961
|
+
* @returns Une promesse qui résout l'objet News créé.
|
|
731
962
|
* @throws {Error} Si une erreur se produit lors de la création de la news.
|
|
732
963
|
*/
|
|
733
|
-
news(newsData?:
|
|
964
|
+
news(newsData?: NewsInput): Promise<News>;
|
|
734
965
|
/**
|
|
735
966
|
* Récupérer les organisations d'une entitée : la liste des organisations dont l'entité est membre ou admin valide.
|
|
736
967
|
* Constant : GET_ORGANIZATIONS_ADMIN | GET_ORGANIZATIONS_NO_ADMIN
|
|
737
|
-
* @param
|
|
738
|
-
* @
|
|
739
|
-
* @returns {Promise<Object>} - Les données de réponse.
|
|
968
|
+
* @param data - Paramètres (partiels) de recherche/pagination.
|
|
969
|
+
* @returns - Les données de réponse.
|
|
740
970
|
*/
|
|
741
|
-
getOrganizations(data?:
|
|
971
|
+
getOrganizations(data?: Partial<GetOrganizationsAdminData | GetOrganizationsNoAdminData>): Promise<PaginatorPage<Organization>>;
|
|
742
972
|
/**
|
|
743
973
|
* Récupérer les projets d'une entitée : liste des projets de l'entité ou elle est "parent" ou "contributeur".
|
|
744
974
|
* Constant : GET_PROJECTS_ADMIN | GET_PROJECTS_NO_ADMIN
|
|
745
|
-
* @param
|
|
746
|
-
* @
|
|
747
|
-
* @returns {Promise<Object>} - Les données de réponse.
|
|
975
|
+
* @param data - Paramètres (partiels) de recherche/pagination.
|
|
976
|
+
* @returns - Les données de réponse.
|
|
748
977
|
*/
|
|
749
|
-
getProjects(data?:
|
|
978
|
+
getProjects(data?: Partial<GetProjectsAdminData | GetProjectsNoAdminData>): Promise<PaginatorPage<Project>>;
|
|
750
979
|
/**
|
|
751
980
|
* Récupérer les POIs d'une entité : liste des POIs de l'entité ou elle est "parent".
|
|
752
981
|
* Constant : GET_POIS_NO_ADMIN / GET_POIS_ADMIN
|
|
753
|
-
* @param
|
|
754
|
-
* @
|
|
755
|
-
* @returns {Promise<Object>} - Les données de réponse.
|
|
982
|
+
* @param data - Paramètres (partiels) de recherche/pagination.
|
|
983
|
+
* @returns - Les données de réponse.
|
|
756
984
|
*/
|
|
757
|
-
getPois(data?:
|
|
985
|
+
getPois(data?: Partial<GetPoisAdminData | GetPoisNoAdminData>): Promise<PaginatorPage<Poi>>;
|
|
758
986
|
/**
|
|
759
987
|
* Récupérer les abonnés d'une entité
|
|
760
988
|
* Constant : GET_SUBSCRIBERS
|
|
761
|
-
* @param
|
|
762
|
-
* @
|
|
763
|
-
* @returns {Promise<Object>} - Les données de réponse.
|
|
989
|
+
* @param data - Paramètres (partiels) de recherche/pagination.
|
|
990
|
+
* @returns - Les données de réponse.
|
|
764
991
|
*/
|
|
765
|
-
getSubscribers(data?:
|
|
992
|
+
getSubscribers(data?: Partial<GetSubscribersData>): Promise<PaginatorPage<User>>;
|
|
766
993
|
/**
|
|
767
994
|
* Liste des badges créés par l'entité
|
|
768
995
|
* Constant : GET_BADGES
|
|
769
|
-
* @param
|
|
770
|
-
* @
|
|
771
|
-
* @returns {Promise<Object>} - Les données de réponse.
|
|
996
|
+
* @param data - Paramètres (partiels) de recherche/pagination.
|
|
997
|
+
* @returns - Les données de réponse.
|
|
772
998
|
*/
|
|
773
|
-
getBadgesIssuer(data?:
|
|
999
|
+
getBadgesIssuer(data?: Partial<GetBadgesData>): Promise<PaginatorPage<Badge>>;
|
|
774
1000
|
/**
|
|
775
|
-
* Récupérer les actualités : Récupère la liste d
|
|
1001
|
+
* Récupérer les actualités : Récupère la liste d'actualités selon plusieurs critères.
|
|
776
1002
|
* Constant : GET_NEWS
|
|
777
|
-
* @param
|
|
778
|
-
* @
|
|
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.
|
|
1003
|
+
* @param data - Paramètres (partiels) de recherche/pagination.
|
|
1004
|
+
* @returns - Les données de réponse.
|
|
783
1005
|
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
784
1006
|
* @throws {Error} - En cas d'erreur inattendue.
|
|
785
1007
|
*/
|
|
786
|
-
getNews(data?:
|
|
787
|
-
dateLimit: number;
|
|
788
|
-
search: {
|
|
789
|
-
name: string;
|
|
790
|
-
};
|
|
791
|
-
indexStep: number;
|
|
792
|
-
}): Promise<any>;
|
|
1008
|
+
getNews(data?: Partial<Omit<GetNewsData, "pathParams">>): Promise<News[]>;
|
|
793
1009
|
/**
|
|
794
1010
|
* Récupérer la galerie d'une entité.
|
|
795
1011
|
* Constant : GET_GALLERY
|
|
796
|
-
* @param
|
|
797
|
-
* @
|
|
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.
|
|
1012
|
+
* @param data - Paramètres (partiels) de recherche.
|
|
1013
|
+
* @returns - Les données de réponse.
|
|
801
1014
|
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
802
1015
|
* @throws {Error} - En cas d'erreur inattendue.
|
|
803
1016
|
*/
|
|
804
|
-
getGallery(data?:
|
|
1017
|
+
getGallery(data?: Partial<Omit<GetGalleryData, "pathParams">> & {
|
|
1018
|
+
pathParams?: {
|
|
1019
|
+
docType?: "image" | "file";
|
|
1020
|
+
};
|
|
1021
|
+
}): Promise<Record<string, any>>;
|
|
805
1022
|
/**
|
|
806
1023
|
* Soumet une demande pour rejoindre l'entité courante (ex. organisation, projet, événement...).
|
|
807
1024
|
* Si une invitation est en attente, elle est automatiquement acceptée.
|
|
808
1025
|
*
|
|
809
|
-
* @returns
|
|
1026
|
+
* @returns - Résultat de la demande ou de la validation.
|
|
810
1027
|
* @throws {ApiError} - Si l'entité ne supporte pas l'action ou si une demande est déjà en cours.
|
|
811
1028
|
*/
|
|
812
|
-
requestToJoin(): Promise<
|
|
1029
|
+
requestToJoin(): Promise<unknown>;
|
|
813
1030
|
/**
|
|
814
1031
|
* Soumet une demande pour devenir administrateur de l'entité courante.
|
|
815
1032
|
* Si une invitation est en attente, elle est automatiquement validée.
|
|
816
1033
|
*
|
|
817
|
-
* @returns
|
|
1034
|
+
* @returns - Résultat de la demande ou de la validation.
|
|
818
1035
|
* @throws {ApiError} - Si l'entité ne supporte pas l'action ou si une demande est déjà en cours.
|
|
819
1036
|
*/
|
|
820
|
-
requestToJoinAdmin(): Promise<
|
|
1037
|
+
requestToJoinAdmin(): Promise<unknown>;
|
|
821
1038
|
/**
|
|
822
1039
|
* Accepte une invitation à rejoindre l'entité courante.
|
|
823
1040
|
* Ne fonctionne que si un lien avec `isInviting` est détecté.
|
|
824
1041
|
*
|
|
825
|
-
* @returns
|
|
1042
|
+
* @returns - Résultat de l'acceptation de l'invitation.
|
|
826
1043
|
* @throws {ApiError} - Si aucune invitation n'est en attente ou si l'entité ne supporte pas cette action.
|
|
827
1044
|
*/
|
|
828
|
-
acceptInvitation(): Promise<
|
|
1045
|
+
acceptInvitation(): Promise<unknown>;
|
|
829
1046
|
/**
|
|
830
1047
|
* Se désengage de l'entité courante : quitte un rôle (membre, contributeur, etc.).
|
|
831
1048
|
*
|
|
832
|
-
* @returns
|
|
1049
|
+
* @returns - Résultat de la déconnexion.
|
|
833
1050
|
* @throws {ApiError} - Si l'entité ne supporte pas l'action ou si l'utilisateur n'est pas lié à cette entité.
|
|
834
1051
|
*/
|
|
835
|
-
leave(): Promise<
|
|
1052
|
+
leave(): Promise<unknown>;
|
|
836
1053
|
/**
|
|
837
1054
|
* S'abonne à l'entité courante.
|
|
838
1055
|
*
|
|
839
|
-
* @returns
|
|
1056
|
+
* @returns - Résultat de l'abonnement.
|
|
840
1057
|
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
|
|
841
1058
|
*/
|
|
842
|
-
follow(): Promise<
|
|
1059
|
+
follow(): Promise<unknown>;
|
|
843
1060
|
/**
|
|
844
1061
|
* Se désabonne de l'entité courante.
|
|
845
1062
|
*
|
|
846
|
-
* @returns
|
|
1063
|
+
* @returns - Résultat de la désinscription.
|
|
847
1064
|
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
|
|
848
1065
|
*/
|
|
849
|
-
unfollow(): Promise<
|
|
1066
|
+
unfollow(): Promise<unknown>;
|
|
850
1067
|
/**
|
|
851
1068
|
* Vérifie si l'utilisateur est connecté et a accès à l'entité.
|
|
852
1069
|
*
|
|
853
|
-
* @param
|
|
854
|
-
* @returns {void}
|
|
1070
|
+
* @param action - Action à effectuer.
|
|
855
1071
|
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si l'entité n'est pas enregistrée.
|
|
856
1072
|
* @private
|
|
857
1073
|
*/
|
|
@@ -859,159 +1075,248 @@ export class BaseEntity {
|
|
|
859
1075
|
/**
|
|
860
1076
|
* Vérifie si l'utilisateur a un lien valide avec l'entité.
|
|
861
1077
|
*
|
|
862
|
-
* @param
|
|
863
|
-
* @
|
|
864
|
-
* @
|
|
865
|
-
* @returns {boolean} - `true` si le lien est valide, `false` sinon.
|
|
866
|
-
* @private
|
|
1078
|
+
* @param userLink
|
|
1079
|
+
* @returns - `true` si le lien est valide, `false` sinon.
|
|
1080
|
+
* @protected
|
|
867
1081
|
*/
|
|
868
|
-
|
|
1082
|
+
protected _validateUserLink(userLink: MinimalUserLink | null | undefined): boolean;
|
|
869
1083
|
/**
|
|
870
1084
|
* Vérifie si l'entité est d'un type spécifique.
|
|
871
1085
|
*
|
|
872
|
-
* @param
|
|
1086
|
+
* @param types - Types d'entité attendus.
|
|
873
1087
|
* @throws {ApiError} - Si l'entité n'est pas du type attendu.
|
|
874
|
-
* @
|
|
1088
|
+
* @protected
|
|
875
1089
|
*/
|
|
876
|
-
|
|
1090
|
+
protected _assertEntityType(...types: string[]): void;
|
|
877
1091
|
/**
|
|
878
1092
|
* Vérifie si l'entité est liée à un type de lien spécifique.
|
|
879
1093
|
*
|
|
880
|
-
* @param
|
|
881
|
-
* @returns
|
|
882
|
-
* @
|
|
1094
|
+
* @param linkType - Type de lien à vérifier.
|
|
1095
|
+
* @returns - `true` si l'entité est liée, `false` sinon.
|
|
1096
|
+
* @protected
|
|
883
1097
|
*/
|
|
884
|
-
|
|
1098
|
+
protected _isLinked(linkType: string): boolean;
|
|
885
1099
|
/**
|
|
886
1100
|
* Vérifie si l'utilisateur est l'auteur de l'entité.
|
|
887
1101
|
*
|
|
888
|
-
* @returns
|
|
1102
|
+
* @returns - `true` si l'utilisateur est l'auteur, `false` sinon.
|
|
889
1103
|
* @throws {ApiError} - Si l'utilisateur n'est pas connecté ou si les données du serveur ne sont pas disponibles.
|
|
890
1104
|
*/
|
|
891
1105
|
isAuthor(): boolean;
|
|
892
1106
|
/**
|
|
893
1107
|
* Vérifie si l'utilisateur est administrateur de l'entité.
|
|
894
1108
|
*
|
|
895
|
-
* @returns
|
|
1109
|
+
* @returns - `true` si l'utilisateur est administrateur, `false` sinon.
|
|
896
1110
|
* @throws {ApiError}
|
|
897
1111
|
*/
|
|
898
1112
|
isAdmin(): boolean;
|
|
899
1113
|
/**
|
|
900
1114
|
* Vérifie si l'utilisateur est soit l'auteur, soit administrateur de l'entité.
|
|
901
1115
|
*
|
|
902
|
-
* @returns
|
|
1116
|
+
* @returns - `true` si l'utilisateur est l'auteur ou administrateur, `false` sinon.
|
|
903
1117
|
* @throws {ApiError}
|
|
904
1118
|
*/
|
|
905
1119
|
isAuthorOrAdmin(): boolean;
|
|
906
1120
|
/**
|
|
907
1121
|
* Vérifie si l'utilisateur est membre de l'entité.
|
|
908
1122
|
*
|
|
909
|
-
* @returns
|
|
1123
|
+
* @returns - `true` si l'utilisateur est membre, `false` sinon.
|
|
910
1124
|
* @throws {ApiError}
|
|
911
1125
|
*/
|
|
912
1126
|
isMember(): boolean;
|
|
913
1127
|
/**
|
|
914
1128
|
* Vérifie si l'utilisateur est contributeur de l'entité.
|
|
915
1129
|
*
|
|
916
|
-
* @returns
|
|
1130
|
+
* @returns - `true` si l'utilisateur est contributeur, `false` sinon.
|
|
917
1131
|
* @throws {ApiError}
|
|
918
1132
|
*/
|
|
919
1133
|
isContributor(): boolean;
|
|
920
1134
|
/**
|
|
921
1135
|
* Vérifie si l'utilisateur est participant de l'entité.
|
|
922
1136
|
*
|
|
923
|
-
* @returns
|
|
1137
|
+
* @returns - `true` si l'utilisateur est participant, `false` sinon.
|
|
924
1138
|
* @throws {ApiError}
|
|
925
1139
|
*/
|
|
926
1140
|
isAttendee(): boolean;
|
|
927
1141
|
/**
|
|
928
1142
|
* Vérifie si l'utilisateur suit l'entité.
|
|
929
1143
|
*
|
|
930
|
-
* @returns
|
|
1144
|
+
* @returns - `true` si l'utilisateur suit l'entité, `false` sinon.
|
|
931
1145
|
* @throws {ApiError}
|
|
932
1146
|
*/
|
|
933
1147
|
isFollower(): boolean;
|
|
934
1148
|
/**
|
|
935
1149
|
* Vérifie si l'utilisateur est abonné à l'entité.
|
|
936
1150
|
*
|
|
937
|
-
* @returns
|
|
1151
|
+
* @returns - `true` si l'utilisateur est abonné, `false` sinon.
|
|
938
1152
|
* @throws {ApiError}
|
|
939
1153
|
*/
|
|
940
1154
|
isFollowing(): boolean;
|
|
941
1155
|
/**
|
|
942
1156
|
* Récupère le JSON personnalisé de l'entité
|
|
943
1157
|
*
|
|
944
|
-
* @returns
|
|
1158
|
+
* @returns - Le JSON personnalisé de l'entité.
|
|
945
1159
|
* @throws {ApiError} - Si le slug de l'entité n'est pas défini.
|
|
946
1160
|
*/
|
|
947
|
-
getCostumJson(): Promise<
|
|
1161
|
+
getCostumJson(): Promise<unknown>;
|
|
948
1162
|
/**
|
|
949
1163
|
* Génère des plages d'index pour la pagination.
|
|
950
1164
|
*
|
|
951
|
-
* @param
|
|
952
|
-
* @param
|
|
953
|
-
* @param
|
|
954
|
-
* @returns
|
|
1165
|
+
* @param searchType - Types de recherche.
|
|
1166
|
+
* @param indexStep - Pas d'index.
|
|
1167
|
+
* @param previousRanges - Plages précédentes.
|
|
1168
|
+
* @returns - Plages d'index générées.
|
|
955
1169
|
* @private
|
|
956
1170
|
*/
|
|
957
1171
|
private _generateRanges;
|
|
958
1172
|
/**
|
|
959
1173
|
* Normalise le compte des résultats.
|
|
960
1174
|
*
|
|
961
|
-
* @param
|
|
962
|
-
* @returns
|
|
1175
|
+
* @param count - Compte des résultats.
|
|
1176
|
+
* @returns - Compte normalisé.
|
|
963
1177
|
* @private
|
|
964
1178
|
*/
|
|
965
1179
|
private _normalizeCount;
|
|
966
1180
|
/**
|
|
967
1181
|
* Récupère une valeur par défaut depuis un endpoint donné.
|
|
968
1182
|
*
|
|
969
|
-
* @param
|
|
970
|
-
* @param
|
|
971
|
-
* @returns
|
|
1183
|
+
* @param constant - Le nom unique de l'endpoint (ex: "GET_ORGANIZATIONS_NO_ADMIN")
|
|
1184
|
+
* @param path - Le chemin vers la propriété (ex: "searchType")
|
|
1185
|
+
* @returns La valeur par défaut, ou undefined si non trouvée
|
|
972
1186
|
*/
|
|
973
|
-
_getDefaultFromEndpoint(constant: string, path: string):
|
|
1187
|
+
_getDefaultFromEndpoint(constant: string, path: string): unknown;
|
|
974
1188
|
/**
|
|
975
|
-
* Coeur de pagination stateless et réutilisable
|
|
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()
|
|
1189
|
+
* Coeur de pagination stateless et réutilisable.
|
|
982
1190
|
*/
|
|
983
|
-
_createPaginatorEngine({ initialData, finalizer }: {
|
|
984
|
-
initialData:
|
|
985
|
-
finalizer:
|
|
986
|
-
}):
|
|
1191
|
+
_createPaginatorEngine<TData extends Record<string, any>, TOut>({ initialData, finalizer }: {
|
|
1192
|
+
initialData: Partial<TData>;
|
|
1193
|
+
finalizer: (data: TData) => Promise<FinalizerResult<TOut>>;
|
|
1194
|
+
}): {
|
|
1195
|
+
next: () => Promise<PaginatorPage<TOut>>;
|
|
1196
|
+
};
|
|
987
1197
|
/**
|
|
988
|
-
|
|
989
|
-
|
|
990
|
-
|
|
991
|
-
|
|
992
|
-
|
|
993
|
-
|
|
1198
|
+
* Injection de contexte Communecter dans une requête finalizer.
|
|
1199
|
+
*/
|
|
1200
|
+
_withCostumContext<TIn extends Record<string, unknown>, TOut>(baseFinalizer: (data: TIn & {
|
|
1201
|
+
costumSlug: string;
|
|
1202
|
+
contextId: string;
|
|
1203
|
+
contextType: EntityType;
|
|
1204
|
+
sourceKey: string[];
|
|
1205
|
+
}) => Promise<TOut>): (data: TIn) => Promise<TOut>;
|
|
994
1206
|
/**
|
|
995
1207
|
* ───────────────────────────────
|
|
996
1208
|
* custom
|
|
997
1209
|
* ───────────────────────────────
|
|
998
1210
|
*/
|
|
999
1211
|
/**
|
|
1000
|
-
* Recherche liée
|
|
1212
|
+
* Recherche globale liée au *costum* (stateless).
|
|
1213
|
+
* Injecte automatiquement le contexte (slug/id/type) via `_withCostumContext`,
|
|
1214
|
+
* puis pagine via `_createPaginatorEngine`. Cette méthode renvoie **directement
|
|
1215
|
+
* la première page** (rétro-compatible) avec `.results`, `.count`, et des helpers
|
|
1216
|
+
* de pagination si disponibles.
|
|
1001
1217
|
*
|
|
1002
|
-
*
|
|
1003
|
-
*
|
|
1004
|
-
|
|
1005
|
-
|
|
1006
|
-
|
|
1007
|
-
|
|
1008
|
-
|
|
1009
|
-
|
|
1010
|
-
|
|
1011
|
-
|
|
1012
|
-
|
|
1013
|
-
|
|
1218
|
+
* Remarque : les éléments de `results` peuvent être hétérogènes (multi-collections)
|
|
1219
|
+
* et éventuellement « liés » en entités par le moteur interne de pagination.
|
|
1220
|
+
*
|
|
1221
|
+
* @param data
|
|
1222
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1223
|
+
* par le moteur de pagination et le contexte).
|
|
1224
|
+
* @returns
|
|
1225
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1226
|
+
* @throws {ApiResponseError}
|
|
1227
|
+
* @throws {Error}
|
|
1228
|
+
*
|
|
1229
|
+
* @example
|
|
1230
|
+
* // Recherche simple (première page)
|
|
1231
|
+
* const page = await entity.searchCostum({ name: "marseille", searchType: ["projects"], indexStep: 12, indexMin: 0 });
|
|
1232
|
+
* console.log(page.results, page.count.total);
|
|
1233
|
+
*
|
|
1234
|
+
* @example
|
|
1235
|
+
* // Paginer
|
|
1236
|
+
* if (page.hasNext) {
|
|
1237
|
+
* const nextPage = await page.next();
|
|
1238
|
+
* console.log(nextPage.pageNumber, nextPage.results.length);
|
|
1239
|
+
* }
|
|
1240
|
+
*/
|
|
1241
|
+
searchCostum(data?: Partial<GlobalAutocompleteCostumData>): Promise<PaginatorPage<any>>;
|
|
1242
|
+
/**
|
|
1243
|
+
* @param data
|
|
1244
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1245
|
+
* par le moteur de pagination et le contexte).
|
|
1246
|
+
* @returns
|
|
1247
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1248
|
+
* @throws {ApiResponseError}
|
|
1249
|
+
* @throws {Error}
|
|
1250
|
+
*/
|
|
1251
|
+
costumEventRequestActors(data?: Partial<Omit<CostumEventRequestActorsData, "pathParams">>): Promise<unknown>;
|
|
1252
|
+
/**
|
|
1253
|
+
* @param data
|
|
1254
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1255
|
+
* par le moteur de pagination et le contexte).
|
|
1256
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1257
|
+
* @throws {ApiResponseError}
|
|
1258
|
+
* @throws {Error}
|
|
1259
|
+
*/
|
|
1260
|
+
costumEventRequestSubevents(data?: Partial<Omit<CostumEventRequestSubeventsData, "pathParams">>): Promise<unknown>;
|
|
1261
|
+
/**
|
|
1262
|
+
* @param data
|
|
1263
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1264
|
+
* par le moteur de pagination et le contexte).
|
|
1265
|
+
* @returns
|
|
1266
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1267
|
+
* @throws {ApiResponseError}
|
|
1268
|
+
* @throws {Error}
|
|
1269
|
+
*/
|
|
1270
|
+
costumEventRequestDates(data?: Partial<Omit<CostumEventRequestDatesData, "pathParams">>): Promise<unknown>;
|
|
1271
|
+
/**
|
|
1272
|
+
* @param data
|
|
1273
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1274
|
+
* par le moteur de pagination et le contexte).
|
|
1275
|
+
* @returns
|
|
1276
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1277
|
+
* @throws {ApiResponseError}
|
|
1278
|
+
* @throws {Error}
|
|
1279
|
+
*/
|
|
1280
|
+
costumEventRequestElementEvent(data?: Partial<Omit<CostumEventRequestElementEventData, "pathParams">>): Promise<unknown>;
|
|
1281
|
+
/**
|
|
1282
|
+
* @param data
|
|
1283
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1284
|
+
* par le moteur de pagination et le contexte).
|
|
1285
|
+
* @returns
|
|
1286
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1287
|
+
* @throws {ApiResponseError}
|
|
1288
|
+
* @throws {Error}
|
|
1289
|
+
*/
|
|
1290
|
+
costumEventRequestCategories(data?: Partial<Omit<CostumEventRequestCategoriesData, "pathParams">>): Promise<unknown>;
|
|
1291
|
+
/**
|
|
1292
|
+
* @param data
|
|
1293
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1294
|
+
* par le moteur de pagination et le contexte).
|
|
1295
|
+
* @returns
|
|
1296
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1297
|
+
* @throws {ApiResponseError}
|
|
1298
|
+
* @throws {Error}
|
|
1299
|
+
*/
|
|
1300
|
+
costumEventRequestEvent(data?: Partial<Omit<CostumEventRequestEventData, "pathParams">>): Promise<unknown>;
|
|
1301
|
+
/**
|
|
1302
|
+
* @param data
|
|
1303
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1304
|
+
* par le moteur de pagination et le contexte).
|
|
1305
|
+
* @returns
|
|
1306
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1307
|
+
* @throws {ApiResponseError}
|
|
1308
|
+
* @throws {Error}
|
|
1309
|
+
*/
|
|
1310
|
+
costumEventRequestLinkTlToEvent(data: Pick<CostumEventRequestLinkTlToEventData, "tl" | "event"> & Partial<Omit<CostumEventRequestLinkTlToEventData, "tl" | "event" | "pathParams">>): Promise<unknown>;
|
|
1311
|
+
/**
|
|
1312
|
+
* @param data
|
|
1313
|
+
* Paramètres de recherche (partiels — les valeurs manquantes sont complétées
|
|
1314
|
+
* par le moteur de pagination et le contexte).
|
|
1315
|
+
* @returns
|
|
1316
|
+
* Première page paginée : `results` (T[]), `count.total`, `hasNext`, etc.
|
|
1317
|
+
* @throws {ApiResponseError}
|
|
1318
|
+
* @throws {Error}
|
|
1319
|
+
*/
|
|
1320
|
+
costumEventRequestLoadContextTag(data?: Partial<Omit<CostumEventRequestLoadContextTagData, "pathParams">>): Promise<unknown>;
|
|
1014
1321
|
}
|
|
1015
1322
|
export default BaseEntity;
|
|
1016
|
-
export type ApiClient = import("../ApiClient.js").default;
|
|
1017
|
-
export type EndpointApi = import("./EndpointApi.js").default;
|