UNPKG

@beam3_dev/api_module

Version:

- Lien de la [documentation](./docs/index.html ) à ouvrir avec l'extension de VScode : `liveserver` disponible [sur le marcketplace](https://marketplace.visualstudio.com/items?itemName=ritwickdey.LiveServer)

1 lines 340 kB
{"version":3,"file":"wb3Api.umd.cjs","sources":["../src/lib/api/index.js","../src/lib/gouv/colors.js","../src/lib/gouv/gouv_api.js","../src/lib/utils/chunks.js","../src/lib/utils/updateEvent.js","../src/lib/plateform/main/3dexperience_api.js","../src/lib/plateform/Compass/index.js","../src/lib/plateform/main/3dcompass_api.js","../src/lib/plateform/Usersgroup/index.js","../src/lib/plateform/main/getCSRFToken.js","../node_modules/querystring/decode.js","../node_modules/querystring/encode.js","../node_modules/querystring/index.js","../src/lib/plateform/main/3dspace_api.js","../src/lib/plateform/main/getCTX.js","../src/lib/plateform/main/getDataFrom3DSpace.js","../src/lib/plateform/main/getDownloadDocument.js","../src/lib/plateform/main/pushDataIn3DSpace.js","../src/lib/plateform/main/loadDatas.js","../src/lib/plateform/Tag/index.js","../src/lib/plateform/Swym/3dswym_api.js","../src/lib/plateform/Swym/communauty/index.js","../src/lib/plateform/Swym/idea/index.js","../src/lib/plateform/Swym/user/index.js","../src/lib/plateform/Swym/comment/index.js","../src/lib/plateform/main/iterop_apiv2.js","../src/lib/add/index.js","../src/lib/plateform/Search/index.js"],"sourcesContent":["import { v4 as uuid } from \"uuid\";\r\n/**\r\n * @description La fonction UUID génère un UUID (Universally Unique Identifier) aléatoire.\r\n * @returns La fonction UUID renvoie un UUID (Universally Unique Identifier) généré aléatoirement à l'aide de la fonction uuid.\r\n *\r\n */\r\nexport function UUID() {\r\n return uuid();\r\n}\r\n","// pour les charts Piveteau\r\nexport const couleurs = {\r\n b3M3Yellow: \"#FFB300\",\r\n b3AboutageBlue: \"#42A5F5\",\r\n b3UsinageGreen: \"#689F38\",\r\n b3PanneauOrange: \"#ff8000\",\r\n b3M350percent: \"#fafa6e\",\r\n b3M380percent: \"#aae479\",\r\n b3M390percent: \"#64c987\",\r\n b3M3100percent: \"#23aa8f\",\r\n b3M3105percent: \"#00898a\",\r\n b3M3110percent: \"#176877\",\r\n b3M3120percent: \"#2a4858\",\r\n b3Aboutage50percent: \"#fafa6e\",\r\n b3Aboutage80percent: \"#aae479\",\r\n b3Aboutage90percent: \"#64c987\",\r\n b3Aboutage100percent: \"#23aa8f\",\r\n b3Aboutage105percent: \"#00898a\",\r\n b3Aboutage110percent: \"#176877\",\r\n b3Aboutage120percent: \"#2a4858\",\r\n b3Warning: \"#FF0000\",\r\n b3Edit1: \"#AD1457\",\r\n b3Edit2: \"#F4511E\",\r\n b3Edit3: \"#009688\",\r\n b3Edit4: \"#D50000\",\r\n b3Edit5: \"#039BE5\",\r\n b3Edit6: \"#9E69AF\",\r\n b3Edit7: \"#A79B8E\",\r\n b3Edit8: \"#616161\",\r\n b3Edit9: \"#795548\",\r\n};\r\n","import { DateTime } from \"luxon\";\r\nimport { couleurs } from \"./colors\";\r\n/**\r\n * Cette fonction récupère une liste de communes en fonction d'un code postal donné à l'aide d'une API\r\n * d'IGN France.\r\n * @param {String} cp - Le paramètre `cp` est une chaîne représentant un code postal français. Il est converti\r\n * en entier à l'aide de `parseInt()` avant d'être utilisé dans la requête API.\r\n * @param { Function } - onDone est une fonction de rappel qui sera exécutée lorsque l'appel API réussit et\r\n * renvoie une réponse. Il prend les données de réponse comme argument et peut être utilisé pour gérer\r\n * les données dans la fonction appelante.\r\n * @param { Function } - Le paramètre `onError` est une fonction de rappel qui sera exécutée s'il y a une\r\n * erreur lors de la requête de récupération. Il permet une gestion personnalisée des erreurs et peut\r\n * être utilisé pour afficher des messages d'erreur ou effectuer d'autres actions en réponse à une\r\n * erreur.\r\n */\r\nexport async function getCommunes(cp, onDone = undefined, onError = undefined) {\r\n const codePostal = parseInt(cp);\r\n await fetch(\r\n \"https://apicarto.ign.fr/api/codes-postaux/communes/\" + codePostal,\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n },\r\n )\r\n .then((response) => response.json())\r\n .then((json) => {\r\n if (onDone) onDone(json);\r\n })\r\n .catch((error) => {\r\n if (onError) onError(error);\r\n console.error(\"Erreur : \" + error);\r\n });\r\n}\r\n\r\n/**\r\n * Il s'agit d'une fonction JavaScript qui utilise l'API-adresse.data.gouv.fr pour rechercher des\r\n * adresses à partir d'une requête et renvoie les résultats au format JSON.\r\n * @param { String } query - L'adresse ou la requête d'emplacement à rechercher dans l'API.\r\n * @param { Function } - onDone est une fonction de rappel qui sera exécutée lorsque l'appel API réussit et\r\n * renvoie une réponse. Il prend la réponse JSON comme paramètre.\r\n * @param { Function } - Le paramètre `onError` est une fonction de rappel qui sera exécutée s'il y a une\r\n * erreur lors de l'appel de l'API. C'est un paramètre optionnel qui peut être passé à la fonction\r\n * `findAdresse`. S'il est fourni, il recevra l'objet d'erreur comme argument.\r\n */\r\nexport async function findAdresse(\r\n query,\r\n onDone = undefined,\r\n onError = undefined,\r\n) {\r\n // https://api-adresse.data.gouv.fr/search/?q=\r\n query = encodeURIComponent(query);\r\n await fetch(\r\n \"https://api-adresse.data.gouv.fr/search/?q=\" + query + \"&limit=15\",\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n },\r\n )\r\n .then((response) => response.json())\r\n .then((json) => {\r\n if (onDone) onDone(json);\r\n })\r\n .catch((error) => {\r\n if (onError) onError(error);\r\n console.error(\"Erreur : \" + error);\r\n });\r\n}\r\n\r\n/**\r\n * @description La fonction `getDataFromGouvFr` récupère les données de l'API du gouvernement français pour les\r\n * jours fériés et les formate dans une structure de données spécifique.\r\n * @param events - Le paramètre `events` est un tableau d'objets représentant des événements. (store.loadedEvents)\r\n * @param colors - Le paramètre `colors` est un objets représentant des couleurs. (Piveteau)\r\n * @returns les données formatées, qui incluent les événements récupérés depuis le point de terminaison\r\n * API \"https://calendrier.api.gouv.fr/jours-feries/metropole/\". Les événements sont formatés dans une\r\n * structure spécifique et renvoyés sous forme d'objet.\r\n */\r\nexport async function getDataFromGouvFr(events, colors = couleurs) {\r\n let year = DateTime.now().year;\r\n const loadedEvents = events;\r\n const sortedData = [];\r\n\r\n const formatData = (json) => {\r\n for (let date in json) sortedData.push({ date, comment: json[date] });\r\n };\r\n\r\n for (let i = year; i <= year + 1; i++) {\r\n await fetch(\r\n \"https://calendrier.api.gouv.fr/jours-feries/metropole/\" + i + \".json\",\r\n {\r\n method: \"GET\",\r\n headers: {\r\n Accept: \"application/json\",\r\n },\r\n },\r\n )\r\n .then((response) => response.json())\r\n .then((json) => {\r\n formatData(json);\r\n })\r\n .catch((error) => console.error(\"Erreur : \" + error));\r\n }\r\n\r\n const formatedData = () => {\r\n const data =\r\n loadedEvents.length === 0\r\n ? {\r\n events: [],\r\n }\r\n : loadedEvents;\r\n for (let each of sortedData) {\r\n const index = data.events.findIndex(\r\n (event) =>\r\n event.start === DateTime.fromISO(each.date).toISODate() &&\r\n event.name === \"Férié : \" + each.comment,\r\n );\r\n\r\n if (index === -1)\r\n data.events.push({\r\n name: \"Férié : \" + each.comment,\r\n start: DateTime.fromISO(each.date).toISODate(),\r\n end: DateTime.fromISO(each.date).toISODate(),\r\n color: colors.b3BusinnessDays,\r\n timed: false,\r\n });\r\n }\r\n return data;\r\n };\r\n\r\n return formatedData();\r\n}\r\n","/**\r\n * @description `chunkArray` Divise un tableau en plus petits blocs et appelle une fonction fournie sur chaque bloc.\r\n *\r\n * @param {Object} obj - Un objet contenant le tableau à diviser, la taille de chaque bloc,et la fonction à appeler sur chaque bloc.\r\n * @param {Array} obj.credentials - les données de base pour la fonction à appeler sur chaque bloc.(space, token...)\r\n * @param {Array} obj.myArray - Le tableau à diviser.\r\n * @param {number} obj.chunk - La taille voulue de chaque bloc.\r\n * @param {Function} obj.fn_to_call - La fonction à appeler sur chaque bloc.\r\n * @return {void} Cette fonction ne renvoie rien.\r\n */\r\nexport function chunkArray(obj, getResponse, getError) {\r\n const { credentials, myArray, chunk, fn_to_call } = obj;\r\n\r\n const chunks = [];\r\n for (let i = 0; i < myArray.length; i += chunk) {\r\n const arrayChunks = myArray.slice(i, i + chunk);\r\n chunks.push(arrayChunks);\r\n }\r\n\r\n loopingChunk(\r\n { credentials, chunks, initLoop: 0, fn: fn_to_call },\r\n (rep) => {\r\n if (getResponse) getResponse(rep);\r\n },\r\n (err) => {\r\n if (getError) getError(err);\r\n }\r\n );\r\n}\r\n\r\n/**\r\n * @description `loopingChunk` Exécute une boucle sur un tableau de chunks, en appelant une fonction fournie sur chaque chunk.\r\n *\r\n * @param {Object} obj - Un objet contenant le tableau de chunks, l'index de démarrage de la boucle et la fonction à appeler sur chaque chunk.\r\n * @param {Array} obj.credentials - les données de base pour la fonction à appeler.\r\n * @param {Array} obj.chunks - Le tableau de chunks sur lequel effectuer la boucle.\r\n * @param {number} obj.initLoop - L'index de démarrage de la boucle.\r\n * @param {Function} obj.fn - La fonction à appeler sur chaque chunk. La fonction doit prendre trois arguments : le chunk actuel, une fonction de rappel, et deux fonctions de rappel facultatives pour gérer les réponses de succès et d'erreur.\r\n * @return {void} Cette fonction ne renvoie rien.\r\n */\r\nfunction loopingChunk(obj, onDone, onError) {\r\n const { credentials, chunks, initLoop, fn } = obj;\r\n const loop = (i) => {\r\n fn(\r\n credentials,\r\n chunks[i],\r\n () => {\r\n i++;\r\n if (i < chunks.length) {\r\n loop(i);\r\n }\r\n },\r\n (response) => {\r\n if (onDone) {\r\n onDone(response);\r\n }\r\n },\r\n (error) => {\r\n if (onError) {\r\n onError(error);\r\n }\r\n }\r\n );\r\n };\r\n loop(initLoop);\r\n}\r\n","/**\r\n * @description La fonction `updateEvent` met à jour un tableau d'événements en ajoutant ou en supprimant un\r\n * événement en fonction d'une condition donnée.\r\n * @param {Array} events - (store.loadedEvents)Une panoplie d'événements. Chaque événement est un objet avec des propriétés telles que uuid, start, end, etc.\r\n *\r\n * @param {Object} data - Le paramètre `data` est un objet qui représente l'événement à mettre à jour.\r\n * @param {String}[data.uuid] - L'identifiant unique de l'événement.\r\n * @param {Boolean} [add=true] - Le paramètre \"add\" est une valeur booléenne qui détermine s'il faut ajouter ou\r\n * mettre à jour un événement dans le tableau des événements. Si add est vrai, la fonction ajoutera\r\n * l'événement au tableau s'il n'existe pas déjà. Si add est faux, la fonction mettra à jour\r\n * l'événement existant dans le tableau\r\n * @returns le tableau `db` (store.loadedEvents) mis à jour.\r\n */\r\nexport async function updateEvent(events, data, add = true) {\r\n const index = events.events.findIndex((val) => val.uuid === data.uuid);\r\n\r\n if (index === -1) {\r\n events.events.push(data);\r\n } else {\r\n if (add) events.events[index] = data;\r\n else events.events.splice(index, 1);\r\n }\r\n\r\n if (events.length > 0) events.sort((a, b) => a.start - b.start);\r\n\r\n return events;\r\n}\r\n","import { widget, requirejs } from \"@widget-lab/3ddashboard-utils\";\r\n\r\n/**\r\n * @description Cette fonction effectue un appel HTTP authentifié à l'aide de la bibliothèque WAFData en de la plateforme.\r\n * @param {String} url - L'URL du point de terminaison de l'API que la fonction appellera.\r\n * @param {object} options - Le paramètre `options` est un objet qui contient diverses options pour la requête\r\n * HTTP, telles que la méthode de requête (GET, POST, etc.), les en-têtes, le corps, etc. Ces options\r\n * sont généralement transmises à l'API `fetch` ou `XMLHttpRequest` pour effectuer la requête HTTP\r\n * réelle.\r\n */\r\nexport function _httpCallAuthenticated(url, options) {\r\n requirejs([\"DS/WAFData/WAFData\"], (WAFData) => {\r\n WAFData.authenticatedRequest(url, options);\r\n });\r\n}\r\n\r\n/**\r\n * @description Cette fonction définit un élément comme étant déplaçable et transmet des données et une fonction de\r\n * rappel à exécuter lorsque le glissement commence (drag and drop).\r\n * @param elem - L'élément HTML qui doit être rendu déplaçable.\r\n * @param strData - strData est une chaîne qui représente les données associées à l'élément déplaçable.\r\n * Ces données sont accessibles lors des opérations de glisser-déposer pour fournir des informations\r\n * supplémentaires sur l'élément déplacé.\r\n * @param onDrag - onDrag est une fonction de rappel qui sera exécutée au début de l'opération de\r\n * glissement. Il peut être utilisé pour effectuer toutes les actions nécessaires avant le début de\r\n * l'opération de glissement, telles que la configuration des données à transférer ou la mise à jour de\r\n * l'apparence de l'élément déplaçable.\r\n */\r\nexport function _setDraggable(elem, strData, onDrag) {\r\n requirejs([\"DS/DataDragAndDrop/DataDragAndDrop\"], (DataDragAndDrop) => {\r\n DataDragAndDrop.draggable(elem, {\r\n data: strData,\r\n start: onDrag,\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * @description Cette fonction configure un proxy de navigateur de balises avec des balises spécifiées et un événement de filtre facultatif.\r\n *\r\n * @param tags - Le paramètre tags est un tableau de chaînes représentant les balises qui seront\r\n * utilisées pour filtrer les sujets dans le widget TagNavigatorProxy.\r\n * @param [onTaggerFilter] - Le paramètre onTaggerFilter est une fonction de rappel qui sera exécutée\r\n * lorsque l'utilisateur filtrera les sujets dans le tagger. Il recevra les sujets filtrés en argument.\r\n */\r\nexport function _setupTagger(tags, onTaggerFilter = undefined) {\r\n requirejs([\"DS/TagNavigatorProxy/TagNavigatorProxy\"], (TagNavigatorProxy) => {\r\n let taggerProxy;\r\n if (taggerProxy === undefined) {\r\n taggerProxy = TagNavigatorProxy.createProxy({\r\n widgetId: widget.id,\r\n filteringMode: \"WithFilteringServices\",\r\n });\r\n\r\n if (onTaggerFilter !== undefined)\r\n taggerProxy.addEvent(\"onFilterSubjectsChange\", onTaggerFilter);\r\n }\r\n taggerProxy.setSubjectsTags(tags);\r\n });\r\n}\r\n\r\n/**\r\n * Cette fonction définit un élément comme pouvant être déposé à l'aide de la bibliothèque\r\n * DataDragAndDrop.\r\n * @param elem - L'élément HTML qui doit être rendu déposable.\r\n * @param drop - Le paramètre `drop` est une fonction qui sera appelée lorsqu'un élément déplaçable est\r\n * déposé sur l'élément déplaçable. Il prend généralement l'élément supprimé comme argument et exécute\r\n * une action basée sur celui-ci.\r\n */\r\nexport function _setDroppable(elem, drop) {\r\n requirejs([\"DS/DataDragAndDrop/DataDragAndDrop\"], (DataDragAndDrop) => {\r\n DataDragAndDrop.droppable(elem, {\r\n drop,\r\n });\r\n });\r\n}\r\n\r\n/**\r\n * @description Cette fonction asynchrone obtient les services de la plateforme à l'aide de la bibliothèque i3DXCompassServices et appelle les fonctions onComplete ou onFailure en fonction du résultat.\r\n *\r\n * @param platformId - ID de la plate-forme pour laquelle les services sont demandés. Si aucun ID de\r\n * plate-forme n'est fourni, la fonction tentera de récupérer l'ID à partir d'une valeur de widget. Si\r\n * aucun ID n'est trouvé, il sera défini sur `undefined`.\r\n * @param onComplete - Une fonction de rappel qui sera exécutée lorsque les services de la plateforme\r\n * seront récupérés avec succès. Il prend les services de plateforme récupérés comme argument.\r\n * @param onFailure - Le paramètre onFailure est une fonction de rappel qui sera exécutée en cas\r\n * d'erreur ou d'échec dans l'exécution de la fonction getPlatformServices. Il permet de gérer les\r\n * erreurs et de fournir un retour d'information approprié à l'utilisateur.\r\n */\r\nexport async function _getPlatformServices(\r\n platformId,\r\n onComplete = undefined,\r\n onFailure = undefined\r\n) {\r\n await requirejs(\r\n [\"DS/i3DXCompassServices/i3DXCompassServices\"],\r\n (i3DXCompassServices) => {\r\n if (!platformId || platformId === \"\") {\r\n platformId = widget.getValue(\"PlatFormInstanceId\");\r\n }\r\n if (!platformId || platformId === \"\") {\r\n platformId = undefined;\r\n }\r\n if (onComplete) {\r\n onComplete(\r\n i3DXCompassServices.getPlatformServices({\r\n platformId,\r\n onComplete,\r\n onFailure,\r\n })\r\n );\r\n }\r\n }\r\n );\r\n}\r\n\r\n/**\r\n * @description\r\n * La fonction `_getPlateformInfos` récupère les informations sur la plateforme à l'aide du module\r\n * PlatformAPI et renvoie les informations dans un objet.\r\n * @returns un objet appelé \"retourAPI\" qui contient les propriétés suivantes :\r\n * - {String} tenant, Le tenant de la plateforme sur lequel on travaille.\r\n * - {Object} user, L'utilisateur connecté à la plateforme...\r\n * - {ArrayOfObject} appsConfiguration, liste d'app auquel on accès.\r\n * - {String} appConf\r\n *\r\n */\r\nexport function _getPlateformInfos() {\r\n let retourAPI = {};\r\n\r\n requirejs([\"DS/PlatformAPI/PlatformAPI\"], (plAPI) => {\r\n const tenant = plAPI.getTenant();\r\n const user = plAPI.getUser();\r\n const appsConfiguration = plAPI.getAllApplicationConfigurations();\r\n const appConf = plAPI.getApplicationConfiguration(\r\n \"com.3ds.wp.passport.cors\"\r\n );\r\n retourAPI = {\r\n tenant,\r\n user,\r\n appsConfiguration,\r\n appConf,\r\n };\r\n });\r\n return retourAPI;\r\n}\r\n\r\nexport function _getLoginTicket(credentials) {\r\n if (credentials.tenant) {\r\n const urlService = `https://${credentials.tenant}-eu1-apps.3dexperience.3ds.com/enovia/resources/AppsMngt/api/v1/services?tenant=${credentials.tenant}&cors=true&xrequestedwith=xmlhttprequest`;\r\n _httpCallAuthenticated(urlService, {\r\n onComplete(response) {\r\n const oResponse =\r\n typeof response === \"string\" ? JSON.parse(response) : response;\r\n if (oResponse && \"platforms\" in oResponse) {\r\n const listServiceUrl = oResponse.platforms.find(\r\n (platform) => platform.id === credentials.tenant.toUpperCase()\r\n );\r\n if (onDone && listServiceUrl) onDone(listServiceUrl);\r\n else if (onError)\r\n onError(\"_getLoginTicket return listServiceUrl = undefined\");\r\n } else {\r\n if (onError) onError(\"_getLoginTicket return oResponse = undefined\");\r\n }\r\n },\r\n onFailure(response) {\r\n if (onError) onError(response);\r\n },\r\n });\r\n }\r\n}\r\nexport function _getMe(credentials, onDone = undefined, onError = undefined) {\r\n if (credentials.tenant) {\r\n const urlService = `https://${credentials.tenant}-eu1.iam.3dexperience.3ds.com/api/authenticated/user/me?xrequestedwith=xmlhttprequest`;\r\n _httpCallAuthenticated(urlService, {\r\n onComplete(response) {\r\n const oResponse =\r\n typeof response === \"string\" ? JSON.parse(response) : response;\r\n if (oResponse && \"fields\" in oResponse) {\r\n if (onDone) onDone(oResponse.fields);\r\n } else {\r\n if (onError) onError(\"_getMe return not find properties fields\");\r\n }\r\n },\r\n onFailure(response) {\r\n if (onError) onError(\"_getMe return error\",response);\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport function _getServiceUrl(credentials, onDone = undefined, onError = undefined) {\r\n if (credentials.tenant) {\r\n const urlService = `https://${credentials.tenant.toLowerCase()}-eu1-compass.3dexperience.3ds.com/enovia/resources/AppsMngt/api/v1/services?platform=${credentials.tenant.toUpperCase()}&cors=true&xrequestedwith=xmlhttprequest`;\r\n _httpCallAuthenticated(urlService, {\r\n onComplete(response) {\r\n const oResponse = typeof response === \"string\" ? JSON.parse(response) : response;\r\n if (oResponse && \"platforms\" in oResponse) {\r\n const listServiceUrl = oResponse.platforms.find(platform => platform.id === credentials.tenant.toUpperCase());\r\n if (onDone && listServiceUrl) onDone(listServiceUrl);\r\n else if (onError) onError(\"_getServiceUrl return listServiceUrl = undefined\");\r\n } else {\r\n if (onError) onError(\"_getServiceUrl return oResponse = undefined\");\r\n }\r\n },\r\n onFailure(response) {\r\n if (onError) onError(response);\r\n }\r\n });\r\n }\r\n}\r\n\r\nexport function _getServiceUrl_3DPassport(\r\n credentials,\r\n onDone = undefined,\r\n onError = undefined\r\n) {\r\n if (credentials.tenant) {\r\n const urlService = `https://${credentials.tenant}-eu1-registry.3dexperience.3ds.com/api/v1/platform/service/instance?serviceId=3dpassport&platformId=${credentials.tenant}`;\r\n _httpCallAuthenticated(urlService, {\r\n onComplete(response) {\r\n const oResponse = JSON.parse(response);\r\n if (Array.isArray(oResponse) && oResponse.length > 0) {\r\n const urlServicePassport = `${oResponse[0].services[0].url}`;\r\n if (onDone) onDone(urlServicePassport);\r\n }\r\n },\r\n onFailure(response) {\r\n if (onError) onError(response);\r\n },\r\n });\r\n }\r\n}\r\n\r\nexport function _Registry_getServicesUrl(\r\n credentials,\r\n onDone = undefined,\r\n onError = undefined\r\n) {\r\n if (credentials.tenant) {\r\n const urlService = `https://eu1-registry.3dexperience.3ds.com/api/v1/platform/instance?id=${credentials.tenant.toLowerCase()}`;\r\n _httpCallAuthenticated(urlService, {\r\n type:\"json\",\r\n onComplete(response) {\r\n if (onDone) onDone(response);\r\n },\r\n onFailure(response) {\r\n if (onError) onError(response);\r\n },\r\n });\r\n }\r\n}\r\n","import { _httpCallAuthenticated } from \"../main/3dexperience_api\";\r\n/**\r\n * @description La fonction `compass_getListAdditionalApps` effectue une requête HTTP GET authentifiée pour\r\n * récupérer une liste d'applications supplémentaires en fonction des informations d'identification\r\n * fournies.\r\n * @param {Object} credentials Un objet contenant les informations d'identification nécessaires à\r\n * l'authentification. Il doit avoir les propriétés suivantes : space, token\r\n * @property {String} space - (_3DCompass)L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace, 3DSwym, 3DCompass...)\r\n * @property {String} tenant - le tenant courant (ex: R1132100968447)\r\n * @param onDone - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque l'appel\r\n * d'API réussit et que les données de réponse sont formatées. Il prend deux arguments :\r\n * `formatedInfos` et `info`. `formatedInfos` est un tableau d'objets contenant le nom et l'identifiant\r\n * de chaque application,\r\n * @param onError - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de la requête HTTP. Il prend un paramètre, « info », qui est un objet contenant des\r\n * informations sur l'erreur.\r\n */\r\n\r\nexport function compass_getListAdditionalApps(credentials, onDone, onError) {\r\n const URL = {\r\n base: `${credentials.space}`,\r\n uri: \"/resources/AppsMngt/api/custom/applications\",\r\n option: `?filter=${credentials.tenant}`, // facultatif\r\n };\r\n const url = `${URL.base}${URL.uri}${URL.option}`;\r\n\r\n _httpCallAuthenticated(url, {\r\n method: \"GET\",\r\n headers: {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json\",\r\n },\r\n onComplete(response, headers, xhr) {\r\n const info = JSON.parse(response);\r\n const formatedInfos = info.data.map((app) => {\r\n const name = app.attributes.name;\r\n const id = app.id;\r\n return { name, id };\r\n });\r\n\r\n if (onDone) onDone(formatedInfos, info);\r\n },\r\n onFailure(response, headers) {\r\n const info = response;\r\n info[\"msg\"] = headers.errormsg;\r\n info[\"errCode\"] = headers.errorcode;\r\n\r\n if (onError) onError(info);\r\n },\r\n });\r\n}\r\n","import { _httpCallAuthenticated } from \"./3dexperience_api.js\";\r\n\r\n/**\r\n * @description La fonction `_AppMngt_get_users` effectue un appel HTTP authentifié pour récupérer une liste\r\n * d'utilisateurs d'une plateforme spécifiée.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {String} credentials.tenant - L'identifiant du tenant sur lequel l'API est déployée.(ex:1132100968447)\r\n * @param {Function} [onDone] - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque l'appel\r\n * API sera terminé avec succès. Il prend un argument, « info », qui correspond aux données de réponse\r\n * de l'API.\r\n * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de la requête HTTP. Il est facultatif et peut être indéfini. S'il est fourni, il sera\r\n * appelé avec l'objet de réponse comme argument.\r\n */\r\nexport function _AppMngt_get_users(\r\n credentials,\r\n onDone = undefined,\r\n onError = undefined,\r\n) {\r\n let url = `${credentials.space}/resources/AppsMngt/user?platform=${credentials.tenant}&limit=-1`;\r\n\r\n _httpCallAuthenticated(url, {\r\n onComplete(response, headers, xhr) {\r\n const info = JSON.parse(response);\r\n console.log(\"_AppMngt_get_users => \", info);\r\n if (onDone) onDone(info);\r\n },\r\n onFailure(response, headers) {\r\n const info = response;\r\n info[\"msg\"] = headers.errormsg;\r\n info[\"errCode\"] = headers.errorcode;\r\n\r\n if (onError) onError(info);\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * @description La fonction `_AppMngt_get_info_user` effectue un appel HTTP authentifié pour récupérer des\r\n * informations sur un utilisateur à partir d'une plateforme spécifique.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {String} id - Le paramètre `id` est l'identifiant unique de l'utilisateur pour lequel vous souhaitez\r\n * récupérer des informations.\r\n * @param {Function} [onDone] - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque la\r\n * requête sera terminée avec succès. Il prend un argument, «info», qui correspond aux données de réponse du serveur.\r\n *\r\n * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de la requête HTTP. Il est facultatif et peut être indéfini. S'il est fourni, il sera\r\n * appelé avec le paramètre `response`, qui contient la réponse d'erreur du serveur.\r\n */\r\nexport function _AppMngt_get_info_user(\r\n credentials,\r\n id,\r\n onDone = undefined,\r\n onError = undefined,\r\n) {\r\n let url = `${credentials.space}/resources/AppsMngt/user?platform=${credentials.tenant}&id=${id}`;\r\n\r\n _httpCallAuthenticated(url, {\r\n onComplete(response, headers, xhr) {\r\n const info = JSON.parse(response);\r\n //console.log(\"_AppMngt_get_info_user => \", info);\r\n if (onDone) onDone(info);\r\n },\r\n\r\n onFailure(response, headers) {\r\n const info = response;\r\n info[\"msg\"] = headers.errormsg;\r\n info[\"errCode\"] = headers.errorcode;\r\n\r\n if (onError) onError(info);\r\n },\r\n });\r\n}\r\n","import { _httpCallAuthenticated } from \"../main/3dexperience_api\";\r\n\r\n//LINK - https://media.3ds.com/support/documentation/developer/Cloud/en/English/CAAi3DXUGREST/UsersGroup_v1.htm#\r\n//!SECTION, Pour faire des modification de UG il faut être OWNER\r\n\r\n// URI de test sur le tenant PIVETEAU_TEST:\r\nconst _uri = \"uuid:3fcb61f2-6417-476d-8a9c-a16fb888771e\";\r\n\r\nconst topHeader = {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json,text/javascript,*/*\",\r\n};\r\n\r\n/**\r\n * @description La fonction `createUserGroups` crée un nouveau groupe d'utilisateurs avec les détails et les membres\r\n * spécifiés. Attention, l'indexation du UserGroup met du temps.\r\n\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {Object} credentials.currentUser.email - Le paramètre `currentUser` est un qui contient les informations de l'utilisateur qui envoie le message(appeler depuis la fonction `_3DSwym_get_currentuser`).\r\n * \r\n * @param {Object} datas - Les informations du groupe d'utilisateurs.\r\n * @param {String} datas.title - Le titre du groupe d'utilisateurs. Entre 3 et 128 caractères, obligatoire.\r\n * @param {String} datas.description - La description du groupe d'utilisateurs. 512 caractères max.\r\n * @param {Array} datas.members - Un tableau d'emails des membres du groupe d'utilisateurs. 100 max email par groupe.\r\n * @param {String} datas.sharing - Le droit de partage du groupe d'utilisateurs. owner/manager/viewer\r\n * @param {String} datas.visibility - La visibilité du groupe d'utilisateurs. public/private\r\n * @param {Function} [onDone] - Une fonction de rappel qui sera appelée lorsque l'appel d'API réussit et que les\r\n * groupes d'utilisateurs sont créés. Il recevra les données de réponse comme argument.\r\n * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de l'exécution de la fonction `createUserGroups`. Il vous permet de gérer et de traiter\r\n * l'erreur de manière personnalisée.\r\n */\r\nexport function createUserGroups(\r\n credentials,\r\n datas,\r\n onDone = undefined,\r\n onError = undefined,\r\n) {\r\n const { space, currentUser } = credentials;\r\n const URL = {\r\n URIUGr: \"/3drdfpersist/resources/v1/usersgroup\",\r\n };\r\n const url = `${space}${URL.URIUGr}`;\r\n\r\n const templateData = {\r\n groups: [\r\n {\r\n title: datas.title,\r\n description: datas.description,\r\n members: datas.members || [currentUser.email, \"samuel.mureau@beam3.fr\"],\r\n pending_members: [],\r\n sharing: datas.sharing,\r\n visibility: datas.visibility,\r\n },\r\n ],\r\n };\r\n\r\n _httpCallAuthenticated(url, {\r\n method: \"POST\",\r\n headers: topHeader,\r\n data: JSON.stringify(templateData),\r\n onComplete(response) {\r\n if (onDone) onDone(JSON.parse(response));\r\n },\r\n onFailure(err, headers) {\r\n console.log(err);\r\n const info = err;\r\n info[\"msg\"] = headers.errormsg;\r\n info[\"errCode\"] = headers.errorcode;\r\n console.log(\"❌ sendDirectMessage => \", info);\r\n if (onError) onError(info);\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * @description La fonction `getComplementUG` effectue une requête GET vers un URI spécifié avec les informations\r\n * d'authentification et renvoie la réponse.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {String} credentials.tenant - L'identifiant du tenant sur lequel l'API est déployée.(ex: R1132100968447)\r\n * @param {String} [uri] - Le paramètre `uri` est l'identifiant de la ressource dont vous souhaitez récupérer le\r\n * complément. (ex: uuid:dcad14cc-5bcd-45fd-a54d-246b95047d45)\r\n * @param {Function} [onDone] - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque la\r\n * requête HTTP sera terminée avec succès. Il prend un argument, qui correspond aux données de réponse\r\n * de la requête.\r\n * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de l'exécution de la fonction `getComplementUG`. Il vous permet de gérer et de traiter\r\n * les informations d'erreur.\r\n */\r\nexport function getComplementUG(\r\n credentials,\r\n uri,\r\n onDone = undefined,\r\n onError = undefined,\r\n) {\r\n const { space, tenant } = credentials;\r\n const baseURL = space;\r\n const URI = `/3drdfpersist/v1/resources/${uri}`;\r\n const OPTs = `?$mask=dsaccess:Mask.GroupUI.Properties&tenant=dstenant:${tenant}`;\r\n const URL = `${baseURL}${URI}${OPTs}`;\r\n\r\n const headers = {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json,text/javascript,*/*\",\r\n };\r\n const opts = {\r\n method: \"GET\",\r\n headers: headers,\r\n };\r\n\r\n _httpCallAuthenticated(URL, {\r\n opts,\r\n onComplete(response) {\r\n if (onDone) onDone(JSON.parse(response));\r\n },\r\n onFailure(err, headers) {\r\n const info = err;\r\n info[\"msg\"] = headers.errormsg;\r\n info[\"errCode\"] = headers.errorcode;\r\n\r\n if (onError) onError(info);\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * @description La fonction `getUsersGroupRules` effectue une requête HTTP GET pour récupérer une liste de\r\n * responsabilités de groupe pour un groupe d'utilisateurs.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {String} credentials.tenant - L'identifiant du tenant sur lequel l'API est déployée.(ex: R1132100968447)\r\n * @param {Function} [onDone] - Le paramètre `onDone` est une fonction de rappel qui sera appelée lorsque la\r\n * requête HTTP sera terminée avec succès. Il faut un argument, qui correspond aux données de réponse\r\n * analysées au format JSON.\r\n * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de l'exécution de la fonction `getUsersGroupRules`. C'est un paramètre facultatif, donc\r\n * s'il n'est pas fourni, la fonction ne fera rien en cas d'erreur.\r\n */\r\nexport function getUsersGroupRules(\r\n credentials,\r\n onDone = undefined,\r\n onError = undefined,\r\n) {\r\n const { _usersgroup, tenant } = credentials;\r\n const baseURL = _usersgroup;\r\n const URI =\r\n \"/3drdfpersist/resources/v1/option-sets/dsusergroup:ListOfGroupResponsibilities/options\";\r\n const OPTS = `?tenant=dstenant:${tenant}`;\r\n const OPTsH = {\r\n method: \"GET\",\r\n Accept: \"application/json,*/*,test/javascript\",\r\n };\r\n const URL = `${baseURL}${URI}${OPTS}`;\r\n\r\n _httpCallAuthenticated(URL, {\r\n OPTsH,\r\n onComplete(response) {\r\n if (onDone) onDone(JSON.parse(response));\r\n },\r\n onFailure(err, headers) {\r\n const info = err;\r\n info[\"function\"] = \"getUsersGroupRules()\";\r\n info[\"msg\"] = headers.errormsg;\r\n info[\"errCode\"] = headers.errorcode;\r\n\r\n if (onError) onError(info);\r\n },\r\n });\r\n}\r\n\r\n/**\r\n * @description La fonction « getUserGroupsList » récupère une liste de groupes d'utilisateurs d'un serveur en\r\n * utilisant les informations d'identification fournies et appelle la fonction de rappel « onDone »\r\n * avec la réponse.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {String} credentials.tenant - L'identifiant du tenant sur lequel l'API est déployée.(ex: R1132100968447)\r\n * @param {String} credentials._usersgroup - l'url de la plateforme concernant les usergroups (comme le credentials.space).\r\n * @param {Number} credentials.numMax - nombre maximum de groupes d'utilisateurs par page, par défaut 50.\r\n * @param {Object} credentials.currentUser.email - Le paramètre `currentUser` est un objet qui contient les informations de l'utilisateur qui envoie le message(appeler depuis la fonction `_3DSwym_get_currentuser`)\r\n * @param {Function} [onDone] - Une fonction de rappel qui sera appelée lorsque l'opération sera terminée avec\r\n * succès. Il recevra la réponse en paramètre.\r\n * @param {Function} [onError] - Le paramètre `onError` est une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de l'exécution de la fonction `getUserGroupsList`. Il vous permet de gérer et de\r\n * répondre à toute erreur qui se produit.\r\n */\r\nexport function getUserGroupsList(\r\n credentials,\r\n onDone = undefined,\r\n onError = undefined,\r\n) {\r\n const { _usersgroup, currentUser, numMax } = credentials;\r\n\r\n if (!numMax) numMax = 50;\r\n const URI = \"/3drdfpersist/resources/v1/usersgroup\";\r\n const opt = \"?select=uri,title,owner,members\";\r\n const opt2 = `&top=${numMax}`; // max à 100\r\n const url = `${_usersgroup}${URI}${opt}${opt2}`;\r\n const header = {\r\n \"Content-Type\": \"application/json\",\r\n Accept: \"application/json,text/javascript,*/*\",\r\n };\r\n const opts = { method: \"GET\", headers: header };\r\n try {\r\n _httpCallAuthenticated(url, {\r\n opts,\r\n onComplete(response) {\r\n const repUG = JSON.parse(response);\r\n const reponse = {};\r\n const UG = repUG.groups.filter((element) => {\r\n return element.uri.startsWith(\"uuid:\");\r\n });\r\n\r\n if (currentUser && Object.keys(currentUser).length > 0) {\r\n const iamOwner = UG.filter((element) => {\r\n return element.owner === currentUser.email;\r\n });\r\n const iamMember = UG.filter((element) => {\r\n return element.members.includes(currentUser.email);\r\n });\r\n const iam = iamOwner.concat(iamMember);\r\n reponse[\"iam\"] = iam;\r\n reponse[\"UG\"] = UG;\r\n reponse[\"iamMember\"] = iamMember;\r\n\r\n getUsersGroupRules(\r\n credentials,\r\n (rules) => {\r\n reponse[\"rules\"] = rules;\r\n if (onDone) onDone(reponse);\r\n },\r\n (err) => {\r\n err.function += \", getUserGroupsList()\";\r\n\r\n if (onError) onError(err);\r\n },\r\n );\r\n }\r\n },\r\n onFailure(err, headers) {\r\n const info = err;\r\n info[\"function\"] = \"getUserGroupsList()\";\r\n info[\"msg\"] = headers.errormsg;\r\n info[\"errCode\"] = headers.errorcode;\r\n\r\n if (onError) onError(info);\r\n },\r\n });\r\n } catch (error) {\r\n console.log(error);\r\n const infoError = {\r\n infoError: error,\r\n fonction: \"getUserGroupsList()\",\r\n catch: new Error(\"Erreur sur la fonction getUserGroupsList()\", {\r\n cause: error,\r\n }),\r\n };\r\n onError(infoError);\r\n }\r\n}\r\n\r\n/**\r\n * @description La fonction `getUserGroupsByURIList` est utilisée pour récupérer\r\n * la liste des groupes d'utilisateurs en fonction d'une liste d'uri fournie.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification\r\n * requises pour authentifier la demande. Il inclut généralement des propriétés\r\n * telles que `token`, `space`, `tenant` et `ctx`.\r\n * @param {String} credentials._usersgroup - L'URL du serveur 3DExperience sur lequel l'API est déployée.\r\n * @param {String} credentials.list_uris - Un tableau d'objet qui représente les uris des groupes d'utilisateurs que vous souhaitez récupérer.\r\n * @example [{uri:'uuid:8cedf28e-88e7-48e6-96fe-077z55bc07f3'}, {uri:'uuid:8cedf288-889z-4806-96fe-0z78z5bc07f3'}]\r\n *\r\n * @param {Function} [onDone] - Une fonction de rappel qui sera appelée lorsque la\r\n * requête HTTP sera terminée avec succès. Elle reçoit la réponse en paramètre.\r\n * @param {Function} [onError] - Une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de l'exécution de la fonction `getUserGroupsByURIList`. Elle reçoit\r\n * un objet en paramètre qui contient des informations sur l'erreur.\r\n */\r\nexport function getUserGroupsByURIList(credentials, onDone, onError) {\r\n const { _usersgroup, list_uris } = credentials;\r\n\r\n if (!list_uris || list_uris.length === 0) {\r\n onError({ msg: \"getUserGroupsByURIList: lists_uri is empty or undefined\" });\r\n return;\r\n }\r\n\r\n const URLElements = {\r\n baseUrl: _usersgroup,\r\n uri: \"/3drdfpersist/resources/v1/usersgroup/groups\",\r\n opt: \"?select=uri,title,owner,members\",\r\n };\r\n\r\n const url = `${URLElements.baseUrl}${URLElements.uri}${URLElements.opt}`;\r\n\r\n const options = {\r\n method: \"POST\",\r\n headers: topHeader,\r\n data: JSON.stringify({ groups: list_uris }),\r\n };\r\n /*\r\nex :\r\ngroups:[\r\n{uri:'uuid:351d1s61s616ds1vdsvgsv'}, {uri:'uuid:351d1s61s616ds1vdsvgsv'}\r\n]\r\n*/\r\n\r\n try {\r\n _httpCallAuthenticated(url, {\r\n ...options,\r\n onComplete(response) {\r\n if (onDone) {\r\n onDone(JSON.parse(response));\r\n }\r\n },\r\n onFailure(err, h) {\r\n const infoError = {\r\n sendOptions: options,\r\n error: new Error(`Erreur sur la fonction getUserGroupsByURIList()`, {\r\n cause: err,\r\n }),\r\n msg: h,\r\n fonction: \"getUserGroupsByURIList()\",\r\n };\r\n if (onError) onError(infoError);\r\n },\r\n });\r\n } catch (error) {\r\n const infoError = {\r\n sendOptions: options,\r\n infoError: error,\r\n fonction: \"getUserGroupsByURIList()\",\r\n error: new Error(\"Erreur sur la fonction getUserGroupsByURIList()\", {\r\n cause: error,\r\n }),\r\n };\r\n if (onError) onError(infoError);\r\n }\r\n}\r\n\r\n/**\r\n * @description La fonction `getUserGroupsByEmailList` est utilisée pour récupérer\r\n * les groupes d'utilisateurs qui ont un utilisateur avec une adresse email\r\n * correspondante.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification\r\n * requises pour authentifier la demande. Il inclut généralement des propriétés\r\n * telles que `token`, `space`, `tenant` et `ctx`.\r\n * @param {String} credentials._usersgroup - L'URL du serveur 3DExperience sur lequel l'API est déployée.\r\n * @param {String[]} credentials.list_emails - Un tableau de String qui représente les\r\n * adresses email des utilisateurs que vous souhaitez récupérer.\r\n * @example [\"user1@domain.com\", \"user2@domain.com\"]\r\n *\r\n * @param {Function} [onDone] - Une fonction de rappel qui sera appelée lorsque la\r\n * requête HTTP sera terminée avec succès. Elle reçoit la réponse en paramètre.\r\n * @param {Function} [onError] - Une fonction de rappel qui sera appelée s'il y a une\r\n * erreur lors de l'exécution de la fonction `getUserGroupsByEmailList`. Elle reçoit\r\n * un objet en paramètre qui contient des informations sur l'erreur.\r\n */\r\nexport function getUserGroupsByEmailList(credentials, onDone, onError) {\r\n const { _usersgroup, list_emails } = credentials;\r\n if (!list_emails || list_emails.length === 0) {\r\n onError({\r\n msg: \"getUserGroupsByEmailList: lists_email is empty or undefined\",\r\n });\r\n return;\r\n }\r\n const URLElements = {\r\n baseUrl: _usersgroup,\r\n uri: \"/3drdfpersist/resources/v1/usersgroup/users/locate\",\r\n opt: \"?person_ident=email\",\r\n };\r\n\r\n const url = `${URLElements.baseUrl}${URLElements.uri}${URLElements.opt}`;\r\n const options = {\r\n method: \"POST\",\r\n headers: topHeader,\r\n data: JSON.stringify({ users: list_emails }),\r\n };\r\n try {\r\n _httpCallAuthenticated(url, {\r\n ...options,\r\n onComplete(response) {\r\n if (onDone) {\r\n const parseResp = JSON.parse(response);\r\n onDone({ groupes: parseResp.users[0].groups, reponse: parseResp });\r\n }\r\n },\r\n onFailure(err, h) {\r\n const infoError = {\r\n sendOptions: options,\r\n error: new Error(\r\n `Erreur sur la fonction getUserGroupsByEmailList()`,\r\n {\r\n cause: err,\r\n },\r\n ),\r\n msg: h,\r\n fonction: \"getUserGroupsByEmailList()\",\r\n };\r\n if (onError) onError(infoError);\r\n },\r\n });\r\n } catch (error) {\r\n const infoError = {\r\n sendOptions: options,\r\n infoError: error,\r\n fonction: \"getUserGroupsByEmailList()\",\r\n error: new Error(\"Erreur sur la fonction getUserGroupsByEmailList()\", {\r\n cause: error,\r\n }),\r\n };\r\n if (onError) onError(infoError);\r\n }\r\n}\r\n\r\n/**\r\n * @description La fonction deleteUserGroups est utilisée pour supprimer des groupes d'utilisateurs à l'aide des\r\n * informations d'identification et de l'URI fournis.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {String} [uri] - Le paramètre `uri` est l'identifiant du groupe d'utilisateurs que vous souhaitez\r\n * supprimer. Il est utilisé pour construire l'URL de la requête DELETE.(ex: uuid:dcad14cc-5bcd-45fd-a54d-246b95047d45)\r\n */\r\n\r\nexport function deleteUserGroups(credentials, uri) {\r\n const { space } = credentials;\r\n const URI = \"/3drdfpersist/resources/v1/usersgroup\";\r\n const url = `${space}${URI}/${uri}`;\r\n\r\n const opts = {\r\n method: \"DELETE\",\r\n };\r\n _httpCallAuthenticated(url, opts);\r\n}\r\n\r\n/**\r\n * @description La fonction `patchUserGroups` est utilisée pour mettre à jour les groupes d'utilisateurs en envoyant\r\n * une requête PATCH à un URI spécifié avec les données fournies.\r\n * @param {Object} credentials - Un objet contenant les informations d'identification requises pour authentifier\r\n * la demande. Il inclut généralement des propriétés telles que « token », « space », « tenant » et « ctx ».\r\n * @param {String} credentials.space - L'URL du serveur sur lequel l'API est déployée.(ex: 3DSpace =>(https://r1132100968447-eu1-space.3dexperience.3ds.com/enovia), 3DSwym, usersgroup, 3DCompass...)\r\n * @param {String} credentials.tenant - L'identifiant du tenant sur lequel l'API est déployée.(ex: R1132100968447)\r\n * @param uri - Le paramètre `uri` est une chaîne qui représente l'identifiant du groupe d'utilisateurs\r\n * que vous souhaitez corriger. Il est utilisé pour construire l'URL de la requête PATCH.(ex: uuid:dcad14cc-5bcd-45fd-a54d-246b95047d45)\r\n * @param {ArrayOfObjects} datas - Le paramètre `datas` est un tableau d'objets qui spécifient les modifications à\r\n * apporter aux groupes d'utilisateurs.(ex: datas[0].op, datas[0].field, datas[0].value)\r\n * @param {String} datas[0].op - l'opération à réaliser. (ex: \"add\", \"remove\", \"replace\")\r\n * @param {String} datas[0].field - Ce sur quoi agir (ex: members[], title, description, owner, visibility)\r\n * @param {StringOrArray} datas[0].value - La nouvelle valeur impactée. Si ce sont des membres value sera un Tableau de String.\r\n \r\n * @param {Function} [onDone] - Une fonction de