@communecter/cocolight-api-client 1.0.140 → 1.0.141
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/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 +1 -1
- package/src/ApiClient.ts +5 -1
- package/src/api/BaseEntity.ts +113 -0
- package/src/api/EndpointApi.ts +16 -1
- package/src/api/EndpointApi.types.ts +103 -0
- package/src/endpoints.module.ts +1 -1
- package/src/index.ts +2 -0
- package/types/api/BaseEntity.d.ts +68 -1
- package/types/api/EndpointApi.d.ts +10 -1
- package/types/api/EndpointApi.types.d.ts +96 -0
- package/types/endpoints.module.d.ts +338 -0
- package/types/index.d.ts +1 -1
package/package.json
CHANGED
package/src/ApiClient.ts
CHANGED
|
@@ -1648,7 +1648,11 @@ export default class ApiClient extends EventEmitter {
|
|
|
1648
1648
|
"imageThumb",
|
|
1649
1649
|
"imageMediumPath",
|
|
1650
1650
|
"logo",
|
|
1651
|
-
"logoMin"
|
|
1651
|
+
"logoMin",
|
|
1652
|
+
// `image` : chemin relatif renvoyé par Document::getDocumentPath (ex: valeurs
|
|
1653
|
+
// thématiques de COSTUM_FILTER_COFORM_BY_PATH). _normalizeImage ne touche que les
|
|
1654
|
+
// strings non vides → "" et non-strings restent inchangés (pas d'effet de bord).
|
|
1655
|
+
"image"
|
|
1652
1656
|
];
|
|
1653
1657
|
|
|
1654
1658
|
/**
|
package/src/api/BaseEntity.ts
CHANGED
|
@@ -46,6 +46,7 @@ import type {
|
|
|
46
46
|
SearchMemberAutocompleteData,
|
|
47
47
|
GetEventsData,
|
|
48
48
|
CostumFilterCoformData,
|
|
49
|
+
CostumFilterCoformByPathData,
|
|
49
50
|
GetCountriesData,
|
|
50
51
|
SearchZonesData,
|
|
51
52
|
CoformAnswersByFormsData,
|
|
@@ -252,6 +253,31 @@ export type CostumContextFields = {
|
|
|
252
253
|
|
|
253
254
|
export type WithCostumContext<T> = T & CostumContextFields;
|
|
254
255
|
|
|
256
|
+
/**
|
|
257
|
+
* Une valeur distincte d'une thématique CoForm (retournée par `coformFilterByPath`).
|
|
258
|
+
*/
|
|
259
|
+
export interface CoformThematicValue {
|
|
260
|
+
/** Nom de la valeur de thématique (ex: "Cafés cantines solidaires"). */
|
|
261
|
+
name: string;
|
|
262
|
+
/** URL de l'image associée (chaîne vide si aucune). */
|
|
263
|
+
image: string;
|
|
264
|
+
/** Identifiants des éléments liés via le finder (orgas/projets/poi selon finderPath). */
|
|
265
|
+
orgaNameArray: string[];
|
|
266
|
+
}
|
|
267
|
+
|
|
268
|
+
/**
|
|
269
|
+
* Résultat normalisé de `coformFilterByPath` (endpoint COSTUM_FILTER_COFORM_BY_PATH).
|
|
270
|
+
* Reconstruit proprement la réponse backend que le normalizer générique aplatit.
|
|
271
|
+
*/
|
|
272
|
+
export interface CoformFilterByPathResult {
|
|
273
|
+
/** _id des answers concernées par la thématique (dédupliqués). */
|
|
274
|
+
distinctElements: string[];
|
|
275
|
+
/** Valeurs distinctes de la thématique, chacune avec image/name/éléments liés. */
|
|
276
|
+
values: CoformThematicValue[];
|
|
277
|
+
/** Compteurs renvoyés par le backend (ex: `{ answers: 14 }`). */
|
|
278
|
+
count: Record<string, number>;
|
|
279
|
+
}
|
|
280
|
+
|
|
255
281
|
// Type pour le curseur de pagination utilisé dans _createPaginatorEngine
|
|
256
282
|
type PaginationCursor = {
|
|
257
283
|
searchType?: string[];
|
|
@@ -5369,6 +5395,93 @@ export class BaseEntity<TServerData = any> {
|
|
|
5369
5395
|
return wrappedFinalizer(data);
|
|
5370
5396
|
}
|
|
5371
5397
|
|
|
5398
|
+
/**
|
|
5399
|
+
* Récupère les valeurs distinctes d'**une seule** thématique CoForm, query pilotée
|
|
5400
|
+
* côté client via `params.thematicPath` (+ `params.finderPath` optionnel).
|
|
5401
|
+
*
|
|
5402
|
+
* Distinct de {@link coformFiltersSearch} (qui passe `searchedData` et fait le batch
|
|
5403
|
+
* multi-filtres piloté serveur) : ici on cible UN filtre précis et on construit
|
|
5404
|
+
* soi-même la projection (`fields`) et les `filters`. Côté backend, c'est la branche
|
|
5405
|
+
* `isset($_POST["params"])` du controller AutoGlobalThematicNtwrkAction.
|
|
5406
|
+
*
|
|
5407
|
+
* Utile pour un **filtre par réseau régional/thématique** : on combine `params` avec
|
|
5408
|
+
* `notSourceKey: true` (cherche dans tout le réseau) ou `sourceKey: ["<réseau>"]`
|
|
5409
|
+
* (scope un réseau précis — cf. `_withCostumContext`).
|
|
5410
|
+
*
|
|
5411
|
+
* @param data - `params.thematicPath` est requis ; le reste (fields/filters/searchType/
|
|
5412
|
+
* sortBy/indexMin/indexStep/notSourceKey/locality) est optionnel.
|
|
5413
|
+
* @returns {@link CoformFilterByPathResult} : `{ distinctElements, values, count }`.
|
|
5414
|
+
* Reconstruit proprement la map backend que le normalizer générique aplatit
|
|
5415
|
+
* (la clé `results` est traitée comme wrapper de liste par `_transformData`).
|
|
5416
|
+
* @throws {ApiError} 400 si `params.thematicPath` est absent.
|
|
5417
|
+
*
|
|
5418
|
+
* @example
|
|
5419
|
+
* const res = await project.coformFilterByPath({
|
|
5420
|
+
* params: {
|
|
5421
|
+
* thematicPath: "lesCommunsDesTierslieux17102023_108_0.multiCheckboxPlus...",
|
|
5422
|
+
* finderPath: "answers.lesCommunsDesTierslieux17102023_108_0.finder...",
|
|
5423
|
+
* },
|
|
5424
|
+
* fields: [
|
|
5425
|
+
* "answers.lesCommunsDesTierslieux17102023_108_0.multiCheckboxPlus...",
|
|
5426
|
+
* "answers.lesCommunsDesTierslieux17102023_108_0.finder...",
|
|
5427
|
+
* ],
|
|
5428
|
+
* filters: {
|
|
5429
|
+
* "answers.lesCommunsDesTierslieux17102023_108_0.multiCheckboxPlus...": { $exists: true },
|
|
5430
|
+
* },
|
|
5431
|
+
* searchType: ["answers"],
|
|
5432
|
+
* notSourceKey: true,
|
|
5433
|
+
* });
|
|
5434
|
+
* res.count.answers; // 14
|
|
5435
|
+
* res.values[0].name; // "Cafés cantines solidaires"
|
|
5436
|
+
* res.values[0].orgaNameArray; // ["5b740..."]
|
|
5437
|
+
* res.distinctElements; // string[] des _id concernés
|
|
5438
|
+
*/
|
|
5439
|
+
async coformFilterByPath(
|
|
5440
|
+
data: Partial<CostumFilterCoformByPathData> & { params: CostumFilterCoformByPathData["params"] },
|
|
5441
|
+
): Promise<CoformFilterByPathResult> {
|
|
5442
|
+
if (!data?.params || typeof data.params.thematicPath !== "string" || data.params.thematicPath.trim() === "") {
|
|
5443
|
+
throw new ApiError("coformFilterByPath : params.thematicPath est requis (string non vide).", 400);
|
|
5444
|
+
}
|
|
5445
|
+
const wrappedFinalizer = this._withCostumContext(
|
|
5446
|
+
(finalData: CostumFilterCoformByPathData) => this.endpointApi.costumFilterCoformByPath(finalData)
|
|
5447
|
+
);
|
|
5448
|
+
const raw = await wrappedFinalizer(data) as Record<string, unknown>;
|
|
5449
|
+
|
|
5450
|
+
// Le normalizer (_transformData) convertit la map `results` en array où chaque
|
|
5451
|
+
// entrée reçoit `id: <cléOriginale>` :
|
|
5452
|
+
// - distinctElements (array) → { id: "distinctElements", 0: "<_id>", 1: "<_id>", ... }
|
|
5453
|
+
// - chaque valeur thématique → { id: "<nom>", name, image, orgaNameArray }
|
|
5454
|
+
// On reconstruit la structure propre à partir de ça.
|
|
5455
|
+
const rawResults = Array.isArray(raw?.results) ? (raw.results as Array<Record<string, unknown>>) : [];
|
|
5456
|
+
|
|
5457
|
+
let distinctElements: string[] = [];
|
|
5458
|
+
const values: CoformThematicValue[] = [];
|
|
5459
|
+
|
|
5460
|
+
for (const entry of rawResults) {
|
|
5461
|
+
if (!entry || typeof entry !== "object") continue;
|
|
5462
|
+
if (entry.id === "distinctElements") {
|
|
5463
|
+
distinctElements = Object.entries(entry)
|
|
5464
|
+
.filter(([k]) => /^\d+$/.test(k))
|
|
5465
|
+
.sort(([a], [b]) => Number(a) - Number(b))
|
|
5466
|
+
.map(([, v]) => String(v));
|
|
5467
|
+
continue;
|
|
5468
|
+
}
|
|
5469
|
+
values.push({
|
|
5470
|
+
name: typeof entry.name === "string" ? entry.name : String(entry.id ?? ""),
|
|
5471
|
+
image: typeof entry.image === "string" ? entry.image : "",
|
|
5472
|
+
orgaNameArray: Array.isArray(entry.orgaNameArray)
|
|
5473
|
+
? (entry.orgaNameArray as unknown[]).map((x) => String(x))
|
|
5474
|
+
: [],
|
|
5475
|
+
});
|
|
5476
|
+
}
|
|
5477
|
+
|
|
5478
|
+
const count = (raw?.count && typeof raw.count === "object")
|
|
5479
|
+
? (raw.count as Record<string, number>)
|
|
5480
|
+
: { answers: values.length };
|
|
5481
|
+
|
|
5482
|
+
return { distinctElements, values, count };
|
|
5483
|
+
}
|
|
5484
|
+
|
|
5372
5485
|
|
|
5373
5486
|
/**
|
|
5374
5487
|
* Recherche des zones géographiques selon un pays et un niveau administratif.
|
package/src/api/EndpointApi.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
import { ApiAuthenticationError } from "../error.js";
|
|
3
3
|
|
|
4
4
|
import type ApiClient from "../ApiClient.js";
|
|
5
|
-
import type { PersonRegisterData, AuthenticateUrlData, RefreshTokenUrlData, PasswordRecoveryData, ServerExchangeTokenData, ChangePasswordData, DeleteAccountData, UpdateSettingsData, UpdateBlockDescriptionData, UpdateBlockInfoData, UpdateBlockSocialData, UpdateBlockLocalityData, UpdateBlockSlugData, CheckData, ProfilImageData, ProfilBannerData, GetElementsAboutData, MulticonnectData, GetNewsData, GetNewsByIdData, AddNewsData, AddImageNewsData, AddFileNewsData, DeleteNewsData, UpdateNewsData, ShareNewsData, GetCommentsData, AddCommentsData, DeleteCommentsData, UpdateCommentsData, SearchTagsData, ShowVoteData, GlobalAutocompleteData, CityAutocompleteData, CityAutocompleteByCountryData, SuggestionInputData, GetProjectsNoAdminData, GetProjectsAdminData, GetPoisNoAdminData, GetPoisAdminData, GetOrganizationsNoAdminData, GetOrganizationsAdminData, GetMembersNoAdminData, GetMembersAdminData, GetFriendsAdminData, GetSubscriptionsData, GetSubscriptionsAdminData, GetSubscribersData, GetSubscribersAdminData, GetContributorsNoAdminData, GetContributorsAdminData, GetBadgesData, GetBadgesFiltersData, ConnectData, DisconnectData, GetElementsKeyData, GetFavorisData, DeleteFavorisData, AddFavorisData, AddOrganizationData, AddProjectData, AddPoiData, AddEventData, DeletePoiData, DeleteEventData, DeleteElementData, AddImageElementData, LinkValidateData, SearchMemberAutocompleteData, GetNotificationsData, GetNotificationsCountData, NotificationUpdateData, MarkNotificationAsReadData, ActivitypubSearchData, ActivitypubLinkData, ActivitypubGetCommunityData, GetBadgeData, AddBadgesData, AssignBadgesData, GetEventsData, ShareEventsData, InviteEventData, FollowData, GetCostumJsonData, GlobalAutocompleteCostumData, NavigatorGettlData, CostumEventRequestActorsData, CostumEventRequestSubeventsData, CostumEventRequestElementEventData, CostumEventRequestCategoriesData, CostumEventRequestDatesData, CostumEventRequestEventData, CostumEventRequestLinkTlToEventData, CostumEventRequestLoadContextTagData, GetGalleryData, GetAttendeesNoAdminData, GetAttendeesAdminData, CoformAnswersSearchData, CoformAnswersByIdData, GetCoformByIdData, CoformUploadAnswerFileData, CoformGetAnswerFilesData, SaveCoformAnswerData, AddVoteData, AddReportAbuseData, UpdatePathValueData, DeleteDocumentByContextData, DeleteDocumentByIdData, DemoteAdminData, CostumFilterCoformData, GetCountriesData, SearchZonesData, CoformAnswersByFormsData, GenerateAnswerFromFormData, FundingEnvelopeData, CoremuOperationData, CostumProjectActionRequestNewData, CostumProjectActionRequestSetStatusData, CostumProjectActionRequestSetDateData, CostumProjectActionRequestSetContributorsData, CostumProjectActionRequestCancelData, CostumProjectActionRequestArchiveData, LinkDiscourseAccountData, UnlinkDiscourseAccountData, DiscourseProfileData, DiscourseCheckEmailData, DiscourseDismissLinkData, LinkMediawikiAccountData, UnlinkMediawikiAccountData, GetMediawikiContributionsData, AddClassifiedData } from "./EndpointApi.types.js";
|
|
5
|
+
import type { PersonRegisterData, AuthenticateUrlData, RefreshTokenUrlData, PasswordRecoveryData, ServerExchangeTokenData, ChangePasswordData, DeleteAccountData, UpdateSettingsData, UpdateBlockDescriptionData, UpdateBlockInfoData, UpdateBlockSocialData, UpdateBlockLocalityData, UpdateBlockSlugData, CheckData, ProfilImageData, ProfilBannerData, GetElementsAboutData, MulticonnectData, GetNewsData, GetNewsByIdData, AddNewsData, AddImageNewsData, AddFileNewsData, DeleteNewsData, UpdateNewsData, ShareNewsData, GetCommentsData, AddCommentsData, DeleteCommentsData, UpdateCommentsData, SearchTagsData, ShowVoteData, GlobalAutocompleteData, CityAutocompleteData, CityAutocompleteByCountryData, SuggestionInputData, GetProjectsNoAdminData, GetProjectsAdminData, GetPoisNoAdminData, GetPoisAdminData, GetOrganizationsNoAdminData, GetOrganizationsAdminData, GetMembersNoAdminData, GetMembersAdminData, GetFriendsAdminData, GetSubscriptionsData, GetSubscriptionsAdminData, GetSubscribersData, GetSubscribersAdminData, GetContributorsNoAdminData, GetContributorsAdminData, GetBadgesData, GetBadgesFiltersData, ConnectData, DisconnectData, GetElementsKeyData, GetFavorisData, DeleteFavorisData, AddFavorisData, AddOrganizationData, AddProjectData, AddPoiData, AddEventData, DeletePoiData, DeleteEventData, DeleteElementData, AddImageElementData, LinkValidateData, SearchMemberAutocompleteData, GetNotificationsData, GetNotificationsCountData, NotificationUpdateData, MarkNotificationAsReadData, ActivitypubSearchData, ActivitypubLinkData, ActivitypubGetCommunityData, GetBadgeData, AddBadgesData, AssignBadgesData, GetEventsData, ShareEventsData, InviteEventData, FollowData, GetCostumJsonData, GlobalAutocompleteCostumData, NavigatorGettlData, CostumEventRequestActorsData, CostumEventRequestSubeventsData, CostumEventRequestElementEventData, CostumEventRequestCategoriesData, CostumEventRequestDatesData, CostumEventRequestEventData, CostumEventRequestLinkTlToEventData, CostumEventRequestLoadContextTagData, GetGalleryData, GetAttendeesNoAdminData, GetAttendeesAdminData, CoformAnswersSearchData, CoformAnswersByIdData, GetCoformByIdData, CoformUploadAnswerFileData, CoformGetAnswerFilesData, SaveCoformAnswerData, AddVoteData, AddReportAbuseData, UpdatePathValueData, DeleteDocumentByContextData, DeleteDocumentByIdData, DemoteAdminData, CostumFilterCoformData, CostumFilterCoformByPathData, GetCountriesData, SearchZonesData, CoformAnswersByFormsData, GenerateAnswerFromFormData, FundingEnvelopeData, CoremuOperationData, CostumProjectActionRequestNewData, CostumProjectActionRequestSetStatusData, CostumProjectActionRequestSetDateData, CostumProjectActionRequestSetContributorsData, CostumProjectActionRequestCancelData, CostumProjectActionRequestArchiveData, LinkDiscourseAccountData, UnlinkDiscourseAccountData, DiscourseProfileData, DiscourseCheckEmailData, DiscourseDismissLinkData, LinkMediawikiAccountData, UnlinkMediawikiAccountData, GetMediawikiContributionsData, AddClassifiedData } from "./EndpointApi.types.js";
|
|
6
6
|
|
|
7
7
|
/**
|
|
8
8
|
* Classe EndpointApi générée automatiquement depuis endpoints-copie.json
|
|
@@ -1829,6 +1829,21 @@ export class EndpointApi {
|
|
|
1829
1829
|
return this.call("COSTUM_FILTER_COFORM", data);
|
|
1830
1830
|
}
|
|
1831
1831
|
|
|
1832
|
+
/**
|
|
1833
|
+
* Filtre CoForm par path (thématique unique) : Récupère les valeurs distinctes d'UNE thématique CoForm (branche `isset($_POST['params'])` du controller AutoGlobalThematicNtwrkAction). La query est construite côté client via `params.thematicPath` (+ `params.finderPath` optionnel) ; le serveur fait un seul globalAutoComplete + tri. Distinct de COSTUM_FILTER_COFORM (branche `searchedData`, multi-filtres pilotés serveur).
|
|
1834
|
+
* Constant : COSTUM_FILTER_COFORM_BY_PATH
|
|
1835
|
+
* @param data - Données envoyées à l'API
|
|
1836
|
+
* @returns Les données de réponse.
|
|
1837
|
+
* @throws {ApiResponseError} - En cas d'erreur détectée dans la réponse.
|
|
1838
|
+
* @throws {Error} - En cas d'erreur inattendue.
|
|
1839
|
+
*/
|
|
1840
|
+
async costumFilterCoformByPath(data: CostumFilterCoformByPathData): Promise<any> {
|
|
1841
|
+
if (!data || typeof data !== "object") {
|
|
1842
|
+
throw new TypeError("Le paramètre data doit être un objet.");
|
|
1843
|
+
}
|
|
1844
|
+
return this.call("COSTUM_FILTER_COFORM_BY_PATH", data);
|
|
1845
|
+
}
|
|
1846
|
+
|
|
1832
1847
|
/**
|
|
1833
1848
|
* Récupérer la liste des pays : Récupérer la liste de tous les pays
|
|
1834
1849
|
* Constant : GET_COUNTRIES
|
|
@@ -5733,6 +5733,109 @@ export interface CostumFilterCoformData {
|
|
|
5733
5733
|
}
|
|
5734
5734
|
|
|
5735
5735
|
|
|
5736
|
+
export interface CostumFilterCoformByPathData {
|
|
5737
|
+
/**
|
|
5738
|
+
* Discriminant de la branche B : chemins de la thématique et du finder. Sa présence aiguille le controller vers le mode single-filtre client-driven.
|
|
5739
|
+
*/
|
|
5740
|
+
params: {
|
|
5741
|
+
/**
|
|
5742
|
+
* Chemin de la thématique dans answers (ex: `formKey.multiCheckboxPlus...`). Devient `path` côté backend.
|
|
5743
|
+
*/
|
|
5744
|
+
thematicPath: string;
|
|
5745
|
+
/**
|
|
5746
|
+
* Chemin du finder (ex: `answers.formKey.finder...`). Optionnel : défaut backend `links.organizations`.
|
|
5747
|
+
*/
|
|
5748
|
+
finderPath?: string;
|
|
5749
|
+
};
|
|
5750
|
+
/**
|
|
5751
|
+
* Types d'entités à inclure (typiquement `["answers"]`).
|
|
5752
|
+
*/
|
|
5753
|
+
searchType?: string[];
|
|
5754
|
+
/**
|
|
5755
|
+
* Projection : champs à retourner (incluant thematicPath et finderPath).
|
|
5756
|
+
*/
|
|
5757
|
+
fields?: string[];
|
|
5758
|
+
/**
|
|
5759
|
+
* Filtres MongoDB additionnels (objet) ou chaîne vide.
|
|
5760
|
+
*/
|
|
5761
|
+
filters?:
|
|
5762
|
+
| {
|
|
5763
|
+
[k: string]: unknown;
|
|
5764
|
+
}
|
|
5765
|
+
| "";
|
|
5766
|
+
/**
|
|
5767
|
+
* Champ de tri (clé = champ, valeur = 1 ou -1).
|
|
5768
|
+
*/
|
|
5769
|
+
sortBy?: {
|
|
5770
|
+
[k: string]: 1 | -1;
|
|
5771
|
+
};
|
|
5772
|
+
/**
|
|
5773
|
+
* Index de départ pour la pagination.
|
|
5774
|
+
*/
|
|
5775
|
+
indexMin?: number;
|
|
5776
|
+
/**
|
|
5777
|
+
* Nombre d'éléments à récupérer (haut par défaut : agrégation des valeurs distinctes).
|
|
5778
|
+
*/
|
|
5779
|
+
indexStep?: number;
|
|
5780
|
+
/**
|
|
5781
|
+
* Comptage des types dans la réponse.
|
|
5782
|
+
*/
|
|
5783
|
+
count?: boolean;
|
|
5784
|
+
/**
|
|
5785
|
+
* Extension Fediverse (toujours désactivée).
|
|
5786
|
+
*/
|
|
5787
|
+
fediverse?: boolean;
|
|
5788
|
+
/**
|
|
5789
|
+
* Si true, ignore le filtre sourceKey côté backend (recherche dans tout le réseau, pas seulement le costum courant).
|
|
5790
|
+
*/
|
|
5791
|
+
notSourceKey?: boolean;
|
|
5792
|
+
/**
|
|
5793
|
+
* Type initial de la recherche (vide par défaut).
|
|
5794
|
+
*/
|
|
5795
|
+
initType?: string;
|
|
5796
|
+
/**
|
|
5797
|
+
* Localités ciblées (object keyé, array d'objets, ou chaîne vide).
|
|
5798
|
+
*/
|
|
5799
|
+
locality?:
|
|
5800
|
+
| {
|
|
5801
|
+
[k: string]: unknown;
|
|
5802
|
+
}
|
|
5803
|
+
| {
|
|
5804
|
+
[k: string]: unknown;
|
|
5805
|
+
}[]
|
|
5806
|
+
| "";
|
|
5807
|
+
/**
|
|
5808
|
+
* ID du contexte costum (auto-injecté par _withCostumContext).
|
|
5809
|
+
*/
|
|
5810
|
+
contextId?: string;
|
|
5811
|
+
/**
|
|
5812
|
+
* Type du contexte costum (auto-injecté).
|
|
5813
|
+
*/
|
|
5814
|
+
contextType?: "projects" | "organizations";
|
|
5815
|
+
/**
|
|
5816
|
+
* Slug du costum (auto-injecté par _withCostumContext).
|
|
5817
|
+
*/
|
|
5818
|
+
costumSlug?: string;
|
|
5819
|
+
/**
|
|
5820
|
+
* Alias historique de contextId (auto-injecté).
|
|
5821
|
+
*/
|
|
5822
|
+
costumId?: string;
|
|
5823
|
+
/**
|
|
5824
|
+
* Alias historique de contextType (auto-injecté).
|
|
5825
|
+
*/
|
|
5826
|
+
costumType?: "projects" | "organizations";
|
|
5827
|
+
/**
|
|
5828
|
+
* Mode édition costum (toujours désactivé).
|
|
5829
|
+
*/
|
|
5830
|
+
costumEditMode?: boolean;
|
|
5831
|
+
/**
|
|
5832
|
+
* Clés de source pour filtrer (ignoré si notSourceKey=true).
|
|
5833
|
+
*/
|
|
5834
|
+
sourceKey?: string[];
|
|
5835
|
+
[k: string]: unknown;
|
|
5836
|
+
}
|
|
5837
|
+
|
|
5838
|
+
|
|
5736
5839
|
export interface GetCountriesData {
|
|
5737
5840
|
/**
|
|
5738
5841
|
* Slug personnalisé
|