@communecter/cocolight-api-client 1.0.154 → 1.0.156

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.
Files changed (331) hide show
  1. package/dist/1035.cocolight-api-client.browser.js +1 -1
  2. package/dist/1035.cocolight-api-client.cjs +1 -1
  3. package/dist/1483.cocolight-api-client.browser.js +1 -1
  4. package/dist/1483.cocolight-api-client.cjs +1 -1
  5. package/dist/1491.cocolight-api-client.browser.js +1 -1
  6. package/dist/1491.cocolight-api-client.cjs +1 -1
  7. package/dist/1494.cocolight-api-client.browser.js +1 -1
  8. package/dist/1494.cocolight-api-client.cjs +1 -1
  9. package/dist/1641.cocolight-api-client.browser.js +1 -1
  10. package/dist/1641.cocolight-api-client.cjs +1 -1
  11. package/dist/1678.cocolight-api-client.browser.js +1 -1
  12. package/dist/1678.cocolight-api-client.cjs +1 -1
  13. package/dist/2041.cocolight-api-client.browser.js +1 -1
  14. package/dist/2041.cocolight-api-client.cjs +1 -1
  15. package/dist/2302.cocolight-api-client.browser.js +1 -1
  16. package/dist/2302.cocolight-api-client.cjs +1 -1
  17. package/dist/2313.cocolight-api-client.browser.js +1 -1
  18. package/dist/2313.cocolight-api-client.cjs +1 -1
  19. package/dist/2379.cocolight-api-client.browser.js +1 -1
  20. package/dist/2379.cocolight-api-client.cjs +1 -1
  21. package/dist/2439.cocolight-api-client.browser.js +1 -1
  22. package/dist/2439.cocolight-api-client.cjs +1 -1
  23. package/dist/2594.cocolight-api-client.browser.js +1 -1
  24. package/dist/2594.cocolight-api-client.cjs +1 -1
  25. package/dist/2766.cocolight-api-client.browser.js +1 -1
  26. package/dist/2766.cocolight-api-client.cjs +1 -1
  27. package/dist/2812.cocolight-api-client.browser.js +1 -1
  28. package/dist/2812.cocolight-api-client.cjs +1 -1
  29. package/dist/2918.cocolight-api-client.browser.js +1 -1
  30. package/dist/2918.cocolight-api-client.cjs +1 -1
  31. package/dist/3028.cocolight-api-client.browser.js +1 -1
  32. package/dist/3028.cocolight-api-client.cjs +1 -1
  33. package/dist/3330.cocolight-api-client.browser.js +1 -1
  34. package/dist/3330.cocolight-api-client.cjs +1 -1
  35. package/dist/3371.cocolight-api-client.browser.js +1 -1
  36. package/dist/3371.cocolight-api-client.cjs +1 -1
  37. package/dist/3401.cocolight-api-client.browser.js +1 -1
  38. package/dist/3401.cocolight-api-client.cjs +1 -1
  39. package/dist/3516.cocolight-api-client.browser.js +1 -1
  40. package/dist/3516.cocolight-api-client.cjs +1 -1
  41. package/dist/3593.cocolight-api-client.browser.js +1 -1
  42. package/dist/3593.cocolight-api-client.cjs +1 -1
  43. package/dist/3764.cocolight-api-client.browser.js +1 -1
  44. package/dist/3764.cocolight-api-client.cjs +1 -1
  45. package/dist/3873.cocolight-api-client.browser.js +1 -1
  46. package/dist/3873.cocolight-api-client.cjs +1 -1
  47. package/dist/3911.cocolight-api-client.browser.js +1 -1
  48. package/dist/3911.cocolight-api-client.cjs +1 -1
  49. package/dist/4031.cocolight-api-client.browser.js +1 -1
  50. package/dist/4031.cocolight-api-client.cjs +1 -1
  51. package/dist/4152.cocolight-api-client.browser.js +1 -1
  52. package/dist/4152.cocolight-api-client.cjs +1 -1
  53. package/dist/4203.cocolight-api-client.browser.js +1 -1
  54. package/dist/4203.cocolight-api-client.cjs +1 -1
  55. package/dist/424.cocolight-api-client.browser.js +1 -1
  56. package/dist/424.cocolight-api-client.cjs +1 -1
  57. package/dist/435.cocolight-api-client.browser.js +1 -1
  58. package/dist/435.cocolight-api-client.cjs +1 -1
  59. package/dist/4402.cocolight-api-client.browser.js +1 -1
  60. package/dist/4402.cocolight-api-client.cjs +1 -1
  61. package/dist/4425.cocolight-api-client.browser.js +1 -1
  62. package/dist/4425.cocolight-api-client.cjs +1 -1
  63. package/dist/4472.cocolight-api-client.browser.js +1 -1
  64. package/dist/4472.cocolight-api-client.cjs +1 -1
  65. package/dist/4914.cocolight-api-client.browser.js +1 -1
  66. package/dist/4914.cocolight-api-client.cjs +1 -1
  67. package/dist/4959.cocolight-api-client.browser.js +1 -1
  68. package/dist/4959.cocolight-api-client.cjs +1 -1
  69. package/dist/5100.cocolight-api-client.browser.js +1 -1
  70. package/dist/5100.cocolight-api-client.cjs +1 -1
  71. package/dist/5111.cocolight-api-client.browser.js +1 -1
  72. package/dist/5111.cocolight-api-client.cjs +1 -1
  73. package/dist/5286.cocolight-api-client.browser.js +1 -1
  74. package/dist/5286.cocolight-api-client.cjs +1 -1
  75. package/dist/5380.cocolight-api-client.browser.js +1 -1
  76. package/dist/5380.cocolight-api-client.cjs +1 -1
  77. package/dist/5383.cocolight-api-client.browser.js +1 -1
  78. package/dist/5383.cocolight-api-client.cjs +1 -1
  79. package/dist/5480.cocolight-api-client.browser.js +1 -1
  80. package/dist/5480.cocolight-api-client.cjs +1 -1
  81. package/dist/5541.cocolight-api-client.browser.js +1 -1
  82. package/dist/5541.cocolight-api-client.cjs +1 -1
  83. package/dist/5839.cocolight-api-client.browser.js +1 -1
  84. package/dist/5839.cocolight-api-client.cjs +1 -1
  85. package/dist/5862.cocolight-api-client.browser.js +1 -1
  86. package/dist/5862.cocolight-api-client.cjs +1 -1
  87. package/dist/5869.cocolight-api-client.browser.js +1 -1
  88. package/dist/5869.cocolight-api-client.cjs +1 -1
  89. package/dist/588.cocolight-api-client.browser.js +1 -1
  90. package/dist/588.cocolight-api-client.cjs +1 -1
  91. package/dist/601.cocolight-api-client.browser.js +1 -1
  92. package/dist/601.cocolight-api-client.cjs +1 -1
  93. package/dist/6012.cocolight-api-client.browser.js +1 -1
  94. package/dist/6012.cocolight-api-client.cjs +1 -1
  95. package/dist/6200.cocolight-api-client.browser.js +1 -1
  96. package/dist/6200.cocolight-api-client.cjs +1 -1
  97. package/dist/6369.cocolight-api-client.browser.js +1 -1
  98. package/dist/6369.cocolight-api-client.cjs +1 -1
  99. package/dist/7009.cocolight-api-client.browser.js +1 -1
  100. package/dist/7009.cocolight-api-client.cjs +1 -1
  101. package/dist/725.cocolight-api-client.browser.js +1 -1
  102. package/dist/725.cocolight-api-client.cjs +1 -1
  103. package/dist/7320.cocolight-api-client.browser.js +1 -1
  104. package/dist/7339.cocolight-api-client.browser.js +1 -1
  105. package/dist/7339.cocolight-api-client.cjs +1 -1
  106. package/dist/7398.cocolight-api-client.browser.js +1 -1
  107. package/dist/7398.cocolight-api-client.cjs +1 -1
  108. package/dist/7888.cocolight-api-client.browser.js +1 -1
  109. package/dist/7888.cocolight-api-client.cjs +1 -1
  110. package/dist/7975.cocolight-api-client.browser.js +1 -1
  111. package/dist/7975.cocolight-api-client.cjs +1 -1
  112. package/dist/809.cocolight-api-client.browser.js +1 -1
  113. package/dist/809.cocolight-api-client.cjs +1 -1
  114. package/dist/8300.cocolight-api-client.browser.js +1 -1
  115. package/dist/8300.cocolight-api-client.cjs +1 -1
  116. package/dist/8317.cocolight-api-client.browser.js +1 -1
  117. package/dist/8317.cocolight-api-client.cjs +1 -1
  118. package/dist/8525.cocolight-api-client.browser.js +1 -1
  119. package/dist/8525.cocolight-api-client.cjs +1 -1
  120. package/dist/8894.cocolight-api-client.browser.js +1 -1
  121. package/dist/8894.cocolight-api-client.cjs +1 -1
  122. package/dist/9301.cocolight-api-client.browser.js +1 -1
  123. package/dist/9301.cocolight-api-client.cjs +1 -1
  124. package/dist/9438.cocolight-api-client.browser.js +1 -1
  125. package/dist/9438.cocolight-api-client.cjs +1 -1
  126. package/dist/9478.cocolight-api-client.browser.js +1 -1
  127. package/dist/9478.cocolight-api-client.cjs +1 -1
  128. package/dist/9568.cocolight-api-client.browser.js +1 -1
  129. package/dist/9568.cocolight-api-client.cjs +1 -1
  130. package/dist/cocolight-api-client.browser.js +6 -6
  131. package/dist/cocolight-api-client.cjs +1 -1
  132. package/dist/cocolight-api-client.vite.mjs.js +1 -1
  133. package/dist/cocolight-api-client.vite.mjs.js.map +1 -1
  134. package/package.json +7 -17
  135. package/types/Api.d.ts +1 -0
  136. package/types/ApiClient.d.ts +10 -1
  137. package/types/api/BaseEntity.d.ts +24 -0
  138. package/types/api/EndpointApi.d.ts +4 -4
  139. package/types/api/EndpointApi.types.d.ts +3 -3
  140. package/types/utils/OfflineClientManager.d.ts +8 -0
  141. package/dist/1035.cocolight-api-client.mjs.js +0 -1
  142. package/dist/1483.cocolight-api-client.mjs.js +0 -1
  143. package/dist/1491.cocolight-api-client.mjs.js +0 -1
  144. package/dist/1494.cocolight-api-client.mjs.js +0 -1
  145. package/dist/1641.cocolight-api-client.mjs.js +0 -1
  146. package/dist/1678.cocolight-api-client.mjs.js +0 -1
  147. package/dist/2041.cocolight-api-client.mjs.js +0 -1
  148. package/dist/2302.cocolight-api-client.mjs.js +0 -1
  149. package/dist/2313.cocolight-api-client.mjs.js +0 -1
  150. package/dist/2379.cocolight-api-client.mjs.js +0 -1
  151. package/dist/2439.cocolight-api-client.mjs.js +0 -1
  152. package/dist/2594.cocolight-api-client.mjs.js +0 -1
  153. package/dist/2766.cocolight-api-client.mjs.js +0 -1
  154. package/dist/2812.cocolight-api-client.mjs.js +0 -1
  155. package/dist/2918.cocolight-api-client.mjs.js +0 -1
  156. package/dist/3028.cocolight-api-client.mjs.js +0 -1
  157. package/dist/3330.cocolight-api-client.mjs.js +0 -1
  158. package/dist/3371.cocolight-api-client.mjs.js +0 -1
  159. package/dist/3401.cocolight-api-client.mjs.js +0 -1
  160. package/dist/3516.cocolight-api-client.mjs.js +0 -1
  161. package/dist/3593.cocolight-api-client.mjs.js +0 -1
  162. package/dist/3764.cocolight-api-client.mjs.js +0 -1
  163. package/dist/3873.cocolight-api-client.mjs.js +0 -1
  164. package/dist/3911.cocolight-api-client.mjs.js +0 -1
  165. package/dist/4031.cocolight-api-client.mjs.js +0 -1
  166. package/dist/4152.cocolight-api-client.mjs.js +0 -1
  167. package/dist/4203.cocolight-api-client.mjs.js +0 -1
  168. package/dist/424.cocolight-api-client.mjs.js +0 -1
  169. package/dist/435.cocolight-api-client.mjs.js +0 -1
  170. package/dist/4402.cocolight-api-client.mjs.js +0 -1
  171. package/dist/4425.cocolight-api-client.mjs.js +0 -1
  172. package/dist/4472.cocolight-api-client.mjs.js +0 -1
  173. package/dist/4914.cocolight-api-client.mjs.js +0 -1
  174. package/dist/4959.cocolight-api-client.mjs.js +0 -1
  175. package/dist/5100.cocolight-api-client.mjs.js +0 -1
  176. package/dist/5111.cocolight-api-client.mjs.js +0 -1
  177. package/dist/5286.cocolight-api-client.mjs.js +0 -1
  178. package/dist/5380.cocolight-api-client.mjs.js +0 -1
  179. package/dist/5383.cocolight-api-client.mjs.js +0 -1
  180. package/dist/5480.cocolight-api-client.mjs.js +0 -1
  181. package/dist/5541.cocolight-api-client.mjs.js +0 -1
  182. package/dist/5839.cocolight-api-client.mjs.js +0 -1
  183. package/dist/5862.cocolight-api-client.mjs.js +0 -1
  184. package/dist/5869.cocolight-api-client.mjs.js +0 -1
  185. package/dist/588.cocolight-api-client.mjs.js +0 -1
  186. package/dist/601.cocolight-api-client.mjs.js +0 -1
  187. package/dist/6012.cocolight-api-client.mjs.js +0 -1
  188. package/dist/6200.cocolight-api-client.mjs.js +0 -1
  189. package/dist/6369.cocolight-api-client.mjs.js +0 -1
  190. package/dist/7009.cocolight-api-client.mjs.js +0 -1
  191. package/dist/725.cocolight-api-client.mjs.js +0 -1
  192. package/dist/7339.cocolight-api-client.mjs.js +0 -1
  193. package/dist/7398.cocolight-api-client.mjs.js +0 -1
  194. package/dist/7888.cocolight-api-client.mjs.js +0 -1
  195. package/dist/7975.cocolight-api-client.mjs.js +0 -1
  196. package/dist/809.cocolight-api-client.mjs.js +0 -1
  197. package/dist/8300.cocolight-api-client.mjs.js +0 -1
  198. package/dist/8317.cocolight-api-client.mjs.js +0 -1
  199. package/dist/8525.cocolight-api-client.mjs.js +0 -1
  200. package/dist/8894.cocolight-api-client.mjs.js +0 -1
  201. package/dist/9301.cocolight-api-client.mjs.js +0 -1
  202. package/dist/9438.cocolight-api-client.mjs.js +0 -1
  203. package/dist/9478.cocolight-api-client.mjs.js +0 -1
  204. package/dist/9568.cocolight-api-client.mjs.js +0 -1
  205. package/dist/cocolight-api-client.mjs.js +0 -1
  206. package/src/Api.ts +0 -348
  207. package/src/ApiClient.ts +0 -1994
  208. package/src/EJSONType.ts +0 -103
  209. package/src/api/Action.ts +0 -665
  210. package/src/api/Answer.ts +0 -1392
  211. package/src/api/Badge.ts +0 -143
  212. package/src/api/BaseEntity.ts +0 -6338
  213. package/src/api/Classified.ts +0 -175
  214. package/src/api/Comment.ts +0 -280
  215. package/src/api/EndpointApi.ts +0 -2270
  216. package/src/api/EndpointApi.types.ts +0 -6566
  217. package/src/api/EntityRegistry.ts +0 -324
  218. package/src/api/Event.ts +0 -360
  219. package/src/api/Form.ts +0 -282
  220. package/src/api/News.ts +0 -547
  221. package/src/api/Notifications.ts +0 -196
  222. package/src/api/Organization.ts +0 -771
  223. package/src/api/Poi.ts +0 -242
  224. package/src/api/Project.ts +0 -545
  225. package/src/api/User.ts +0 -1889
  226. package/src/api/UserApi.ts +0 -192
  227. package/src/api/serverDataType/Action.ts +0 -177
  228. package/src/api/serverDataType/Answer.ts +0 -106
  229. package/src/api/serverDataType/Classified.ts +0 -152
  230. package/src/api/serverDataType/Comment.ts +0 -88
  231. package/src/api/serverDataType/Country.ts +0 -1
  232. package/src/api/serverDataType/Event.ts +0 -112
  233. package/src/api/serverDataType/Form.ts +0 -157
  234. package/src/api/serverDataType/News.ts +0 -138
  235. package/src/api/serverDataType/Notification.ts +0 -81
  236. package/src/api/serverDataType/Organization.ts +0 -111
  237. package/src/api/serverDataType/Poi.ts +0 -75
  238. package/src/api/serverDataType/Project.ts +0 -115
  239. package/src/api/serverDataType/User.ts +0 -112
  240. package/src/api/serverDataType/Zone.ts +0 -33
  241. package/src/api/serverDataType/common.ts +0 -84
  242. package/src/costum/normalize.ts +0 -7
  243. package/src/costum/registry.ts +0 -138
  244. package/src/costum/runtime-map.ts +0 -221
  245. package/src/costum/runtime.ts +0 -274
  246. package/src/costum/schemas/CercleTravailleursSociauxLiberauxLaPlumeSociale.ts +0 -19
  247. package/src/costum/schemas/FabEn.ts +0 -19
  248. package/src/costum/schemas/LivingLabInnovationSocialeBraspanon.ts +0 -19
  249. package/src/costum/schemas/alfph.ts +0 -27
  250. package/src/costum/schemas/campagne.ts +0 -19
  251. package/src/costum/schemas/chtitube.ts +0 -19
  252. package/src/costum/schemas/circuitCourt.ts +0 -19
  253. package/src/costum/schemas/cmcasHauteBretagne.ts +0 -19
  254. package/src/costum/schemas/coFinancementTierslieux.ts +0 -27
  255. package/src/costum/schemas/coeurNumerique.ts +0 -19
  256. package/src/costum/schemas/communLundi.ts +0 -19
  257. package/src/costum/schemas/cressReunion.ts +0 -35
  258. package/src/costum/schemas/cressReunionNetwork.ts +0 -35
  259. package/src/costum/schemas/ctenat.ts +0 -43
  260. package/src/costum/schemas/cyberReunion.ts +0 -19
  261. package/src/costum/schemas/ekisphere.ts +0 -35
  262. package/src/costum/schemas/equipementsSportifs974.ts +0 -19
  263. package/src/costum/schemas/federationDesCae.ts +0 -19
  264. package/src/costum/schemas/formationGenerique.ts +0 -35
  265. package/src/costum/schemas/franceTierslieux.ts +0 -19
  266. package/src/costum/schemas/hinaura.ts +0 -27
  267. package/src/costum/schemas/hubmayotte.ts +0 -19
  268. package/src/costum/schemas/hubnouvellecaledonie.ts +0 -19
  269. package/src/costum/schemas/hubpolynesiefrancaise.ts +0 -19
  270. package/src/costum/schemas/hubreunion.ts +0 -19
  271. package/src/costum/schemas/hubterritoires.ts +0 -19
  272. package/src/costum/schemas/hubwallisetfutuna.ts +0 -19
  273. package/src/costum/schemas/hva.ts +0 -27
  274. package/src/costum/schemas/ibv2.ts +0 -19
  275. package/src/costum/schemas/institutBleu.ts +0 -19
  276. package/src/costum/schemas/journalInsoumisChambery.ts +0 -27
  277. package/src/costum/schemas/kpacite.ts +0 -19
  278. package/src/costum/schemas/laCompagnieDesTierslieux.ts +0 -43
  279. package/src/costum/schemas/laMaisonDesFaiseurs.ts +0 -19
  280. package/src/costum/schemas/laReunionPourUnNumeriqueInclusif.ts +0 -19
  281. package/src/costum/schemas/laSemaineDesTierslieux.ts +0 -19
  282. package/src/costum/schemas/labEnCommuns.ts +0 -19
  283. package/src/costum/schemas/lakou.ts +0 -27
  284. package/src/costum/schemas/lesCommunsDesTierslieux.ts +0 -19
  285. package/src/costum/schemas/mayottePourUnNumeriqueInclusif.ts +0 -19
  286. package/src/costum/schemas/meir.ts +0 -27
  287. package/src/costum/schemas/navigatorDesTierslieux.ts +0 -19
  288. package/src/costum/schemas/notragora.ts +0 -27
  289. package/src/costum/schemas/nouvellecaledoniePourUnNumeriqueInclusif.ts +0 -19
  290. package/src/costum/schemas/openAtlas.ts +0 -19
  291. package/src/costum/schemas/polynesieFrancaisePourUnNumeriqueInclusif.ts +0 -19
  292. package/src/costum/schemas/prdr.ts +0 -19
  293. package/src/costum/schemas/reseauTierslieux.ts +0 -19
  294. package/src/costum/schemas/rfflabs.ts +0 -19
  295. package/src/costum/schemas/ries.ts +0 -19
  296. package/src/costum/schemas/siteDuPactePourLaTransition.ts +0 -27
  297. package/src/costum/schemas/sportSanteBienetre.ts +0 -43
  298. package/src/costum/schemas/suppa.ts +0 -19
  299. package/src/costum/schemas/terramies.ts +0 -19
  300. package/src/costum/schemas/testeTplFormation.ts +0 -35
  301. package/src/costum/schemas/tierslieuxbelgique.ts +0 -19
  302. package/src/costum/schemas/tierslieuxorg1.ts +0 -35
  303. package/src/costum/schemas/transiter.ts +0 -35
  304. package/src/costum/schemas/vhelioPeiTour2025.ts +0 -19
  305. package/src/costum/schemas/wallisetfutunaPourUnNumeriqueInclusif.ts +0 -19
  306. package/src/costum/symbol.ts +0 -26
  307. package/src/costum/types.ts +0 -895
  308. package/src/endpoints.module.ts +0 -4253
  309. package/src/error.ts +0 -86
  310. package/src/forms/entityForm.ts +0 -142
  311. package/src/index.ts +0 -161
  312. package/src/mixin/UserMixin.ts +0 -4
  313. package/src/types/api-responses.ts +0 -217
  314. package/src/types/entities.ts +0 -58
  315. package/src/types/error-guards.ts +0 -230
  316. package/src/types/index.ts +0 -41
  317. package/src/types/payloads.ts +0 -21
  318. package/src/types/transforms.ts +0 -119
  319. package/src/utils/FileOfflineStorageStrategy.node.ts +0 -50
  320. package/src/utils/FileStorageStrategy.node.ts +0 -63
  321. package/src/utils/MultiServerFileStorageStrategy.node.ts +0 -67
  322. package/src/utils/MultiServerTokenStorageStrategy.ts +0 -139
  323. package/src/utils/OfflineClientManager.ts +0 -216
  324. package/src/utils/OfflineQueueStorageStrategy.ts +0 -47
  325. package/src/utils/TokenStorage.ts +0 -77
  326. package/src/utils/compat.ts +0 -12
  327. package/src/utils/createDefaultMultiServerTokenStorageStrategy.ts +0 -35
  328. package/src/utils/createDefaultOfflineStrategy.ts +0 -34
  329. package/src/utils/createDefaultTokenStorageStrategy.ts +0 -33
  330. package/src/utils/reactive.ts +0 -243
  331. package/src/utils/stream-utils.node.ts +0 -12
package/src/api/Form.ts DELETED
@@ -1,282 +0,0 @@
1
- import { BaseEntity } from "./BaseEntity.js";
2
- import { ApiError } from "../error.js";
3
-
4
- import type { Answer } from "./Answer.js";
5
- import type { PaginatorPage, PaginatorState } from "./BaseEntity.js";
6
- import type {
7
- CoformAnswersSearchData,
8
- GetCoformCatalogsData,
9
- } from "./EndpointApi.types.js";
10
- import type { CoformCommonTableContributor, FormItemNormalized } from "./serverDataType/Form.js";
11
-
12
- /**
13
- * Une entrée de catalogue commonTable (une criteria agrégée cross-réponses).
14
- * `label`/`usage`/`usageKey`/`coeff`/`count` toujours présents (le backend
15
- * les construit avec défauts) ; `names`/`name` seulement si au moins une
16
- * réponse `yesOrNo` non vide existe pour la criteria. Les champs echo
17
- * (`label`, `usage`…) renvoient la valeur stockée brute, sans coercion.
18
- */
19
- export interface CommonTableCatalogEntry {
20
- label: unknown;
21
- usage: unknown;
22
- usageKey: unknown;
23
- coeff: number | string | boolean | null;
24
- count: number;
25
- /** Distribution `{ solutionName → fréquence }` ; absent si aucune réponse. */
26
- names?: Record<string, number>;
27
- /** Mode (plus fréquent) de `names` ; présent ssi `names` présent. */
28
- name?: string;
29
- }
30
-
31
- /**
32
- * Catalogue collaboratif des inputs `commonTable` : map
33
- * `inputKey → (criteriaId → CommonTableCatalogEntry)`. Les entrées sont
34
- * DIRECTEMENT sous l'inputKey (pas de niveau intermédiaire `entries`).
35
- * Format aligné sur la réponse backend de `GET_COFORM_CATALOGS`
36
- * (`getCatalogs` normalise les `[]` PHP — catalogues vides — en `{}`).
37
- */
38
- export type CommonTableCatalogs = Record<string, Record<string, CommonTableCatalogEntry>>;
39
-
40
- export class Form extends BaseEntity<FormItemNormalized> {
41
- static override entityType = "forms";
42
-
43
- static override entityTag = "Form";
44
- static override SCHEMA_CONSTANTS: string[] = [];
45
-
46
- static ADD_BLOCKS: Map<string, string> = new Map([]);
47
- static UPDATE_BLOCKS: Map<string, string> = new Map([]);
48
-
49
- override defaultFields: Record<string, any> = {};
50
- override removeFields: string[] = [];
51
-
52
- /**
53
- * Transforme les champs imbriqués en instances d'entités si nécessaire.
54
- * @param data - Les données brutes du serveur.
55
- * @returns Les données transformées.
56
- * @protected
57
- */
58
- protected override _transformServerData(data: FormItemNormalized): FormItemNormalized {
59
- // Pour l'instant, on ne transforme pas les relations parent
60
- // car elles peuvent être des Organizations ou Projects
61
- // On pourrait ajouter cette transformation plus tard si nécessaire
62
-
63
- return data;
64
- }
65
-
66
- /**
67
- * Rafraîchit les données du formulaire depuis l'API.
68
- * Constant : GET_COFORM_BY_ID
69
- */
70
- override async get(): Promise<Record<string, any>> {
71
- if (!this.id) throw new ApiError("Impossible de rafraîchir sans ID.", 400);
72
- const parentFormId = this.id; // Type narrowing
73
-
74
- const form = await this.endpointApi.getCoformById({
75
- parentFormId
76
- });
77
-
78
- if (form?.data?.id || form?.data?._id) {
79
- // Normaliser les valeurs nulles en objets/tableaux vides pour cohérence.
80
- // Injection de `collection: "forms"` : le backend (PHDB::find) ne renvoie pas
81
- // ce champ ; on l'ajoute côté SDK pour rester cohérent avec les autres entités.
82
- const normalizedData = {
83
- ...form.data,
84
- collection: "forms" as const,
85
- inputs: form.data.inputs ?? {},
86
- params: form.data.params ?? {},
87
- subForms: form.data.subForms ?? [],
88
- parent: form.data.parent ?? undefined,
89
- config: form.data.config ?? undefined,
90
- } as FormItemNormalized;
91
-
92
- this._setData(normalizedData, { forceInitialDraftReset: true });
93
- return this.serverData;
94
- }
95
- throw new ApiError(`Aucun formulaire trouvé pour l'ID ${this.id}`, 404);
96
- }
97
-
98
- /**
99
- * Recherche paginée des Answers liées à CE Form, dans le costumContext de son parent.
100
- *
101
- * **Délégation au parent** : le Form lui-même n'a pas de costumContext (pas de
102
- * `slug` côté serverData). Cette méthode remonte `this.parent` (qui doit être
103
- * une `Organization` ou un `Project` ayant un slug) et délègue à
104
- * `parent.coformAnswersSearch({ filters: { form: this.id, ... } })`.
105
- *
106
- * Pattern identique à `Comment._add` qui remonte `this.parent` pour récupérer
107
- * le contexte d'ancrage.
108
- *
109
- * **Important** : pour utiliser cette méthode, le Form doit avoir été créé via
110
- * `org.form({id})` ou `project.form({id})` — pas via `api.form({id})` direct
111
- * (qui crée un Form avec `parent = ApiClient`, sans costumContext).
112
- *
113
- * @param data - Paramètres de recherche (`filters`, `fields`, `sortBy`, etc.).
114
- * Le champ `filters.form` est automatiquement injecté avec `this.id`.
115
- * @param options - Options de pagination (`restoredState` pour reprendre une navigation)
116
- * @returns Première page paginée avec `results` (Answer[]), `count`, `hasNext`, etc.
117
- * @throws {ApiError} si le Form n'a pas d'id ou si son parent n'a pas de costumContext.
118
- *
119
- * @example
120
- * const org = await api.organization({ slug: "navigatorDesTierslieux" });
121
- * const form = await org.form({ id: "6925e2b05dd63b02ca70d6d9" });
122
- * const page = await form.getAnswers({ sortBy: { created: -1 } });
123
- * page.results; // Answer[]
124
- * page.count.total; // nombre total
125
- */
126
- async getAnswers(
127
- data: Partial<CoformAnswersSearchData> = {},
128
- options?: { restoredState?: PaginatorState }
129
- ): Promise<PaginatorPage<Answer>> {
130
- if (!this.id) throw new ApiError("Form sans id, impossible de chercher ses réponses.", 400);
131
-
132
- const parent = this.parent;
133
- if (
134
- !(parent instanceof BaseEntity)
135
- || typeof parent.serverData?.slug !== "string"
136
- || typeof parent.serverData?.id !== "string"
137
- ) {
138
- throw new ApiError(
139
- "form.getAnswers nécessite un Form créé via `org.form({id})` ou `project.form({id})` "
140
- + "(parent avec costumContext). Pour un Form isolé, utilisez "
141
- + "`organization.coformAnswersSearch({ filters: { form: form.id } })` directement.",
142
- 400
143
- );
144
- }
145
-
146
- // Injecte filters.form = this.id et délègue au parent costum
147
- const mergedFilters = { ...(data.filters ?? {}), form: this.id };
148
- return parent.coformAnswersSearch(
149
- { ...data, filters: mergedFilters },
150
- options
151
- );
152
- }
153
-
154
- /**
155
- * {@inheritDoc BaseEntity#answer}
156
- *
157
- * Crée une instance d'Answer **rattachée à ce Form**.
158
- *
159
- * - Si `answerData.id` est fourni → fetch l'Answer existante (via `COFORM_ANSWERS_BY_ID`).
160
- * - Sinon → crée un draft d'Answer avec `form: this.id` pré-rempli, prêt à
161
- * être complété puis sauvegardé.
162
- *
163
- * Le parent de l'Answer renvoyée est ce Form — la chaîne `org > form > answer`
164
- * est donc préservée, ce qui permet (à terme) à l'Answer de remonter le
165
- * costumContext via `this.parent.parent` si besoin.
166
- *
167
- * @example
168
- * // Fetch d'une Answer existante
169
- * const form = await org.form({ id: "6925e2b05dd63b02ca70d6d9" });
170
- * const answer = await form.answer({ id: "6925869ad76aaf6c5a2b2f8a" });
171
- *
172
- * // Création d'un draft
173
- * const draft = await form.answer();
174
- * draft.data.answers = { "field1": "value1" };
175
- * await draft.save();
176
- */
177
- override async answer(answerData: Parameters<BaseEntity<FormItemNormalized>["answer"]>[0] = {}): Promise<Answer> {
178
- if (!this.id) {
179
- throw new ApiError("Form sans id, impossible de créer une Answer rattachée.", 400);
180
- }
181
-
182
- // Pré-remplit `form: this.id` uniquement pour les drafts (pas de fetch par id).
183
- const hasId = typeof (answerData as { id?: string }).id === "string" && (answerData as { id: string }).id.length > 0;
184
- const payload: Record<string, any> = hasId
185
- ? answerData
186
- : { form: this.id, ...answerData };
187
-
188
- const entity = await this.entity("answers", payload);
189
- return entity as Answer;
190
- }
191
-
192
- /**
193
- * Récupère la liste des contributeurs d'une table commune (commonTable) de CE formulaire.
194
- *
195
- * Pour un input `commonTable` et une ligne du tableau (un ou plusieurs `criteriaIds`
196
- * dédupés côté React via `groupKey`), retourne les contributions individuelles
197
- * (auteur, solution, satisfaction, note).
198
- *
199
- * Constant : GET_COFORM_COMMONTABLE_CONTRIBUTORS
200
- * (POST /survey/coform/getcommontablecontributors, auth bearer).
201
- *
202
- * @param params.inputKey - Clé originale de l'input commonTable (sans préfixe yesOrNo).
203
- * @param params.criteriaIds - criteriaIds de la ligne agrégée : tableau `string[]`
204
- * (sérialisé automatiquement) ou string JSON déjà sérialisée.
205
- * @returns La liste des contributions (une entrée par contribution).
206
- * @throws {ApiError} si le Form n'a pas d'id.
207
- *
208
- * @example
209
- * const form = await org.form({ id: "6925e2b05dd63b02ca70d6d9" });
210
- * const contributors = await form.getCommonTableContributors({
211
- * inputKey: "usagesEtSolutions",
212
- * criteriaIds: ["criteria1778265370227"],
213
- * });
214
- */
215
- async getCommonTableContributors(
216
- params: { inputKey: string; criteriaIds: string | string[] }
217
- ): Promise<CoformCommonTableContributor[]> {
218
- const formId = this.id;
219
- if (!formId) throw new ApiError("Form sans id, impossible de récupérer les contributeurs.", 400);
220
-
221
- const criteriaIds = Array.isArray(params.criteriaIds)
222
- ? JSON.stringify(params.criteriaIds)
223
- : params.criteriaIds;
224
-
225
- const res = (await this.endpointApi.getCoformCommontableContributors({
226
- formId,
227
- inputKey: params.inputKey,
228
- criteriaIds
229
- })) as { data?: { contributors?: CoformCommonTableContributor[] } };
230
-
231
- return res?.data?.contributors ?? [];
232
- }
233
-
234
- /**
235
- * Récupère en UN appel batch les catalogues collaboratifs des inputs
236
- * `commonTable` de CE formulaire. Pour chaque `inputKey`, retourne les
237
- * `criterias` agrégées par toutes les réponses + le comptage par
238
- * `criteriaId`.
239
- *
240
- * Constant : `GET_COFORM_CATALOGS` (POST `/survey/coform/getformcatalogs`,
241
- * auth: none — accessible aux visiteurs anonymes pour pré-remplir les
242
- * suggestions côté input).
243
- *
244
- * Si `inputKeys` est vide, on lève une erreur — le caller doit gate
245
- * l'appel en amont (cf. `useCoFormCatalogs` qui passe `enabled: false`).
246
- *
247
- * @param params.inputKeys - `fieldKey` de tous les inputs commonTable.
248
- * @returns Map `inputKey → (criteriaId → entry)` ; `{}` pour un inputKey sans données.
249
- * @throws {ApiError} 400 si Form sans id ou `inputKeys` vide.
250
- *
251
- * @example
252
- * const form = await api.form({ id: formId });
253
- * const catalogs = await form.getCatalogs({ inputKeys: ["usagesEtSolutions"] });
254
- * catalogs["usagesEtSolutions"]; // {criteriaId: {label, count, name?, names?, ...}}
255
- */
256
- async getCatalogs(params: { inputKeys: string[] }): Promise<CommonTableCatalogs> {
257
- if (!this.id) throw new ApiError("Form sans id, impossible de récupérer ses catalogues.", 400);
258
- if (!Array.isArray(params?.inputKeys) || params.inputKeys.length === 0) {
259
- throw new ApiError("`inputKeys` requis et non vide pour getCatalogs.", 400);
260
- }
261
-
262
- const requestData: GetCoformCatalogsData = {
263
- formId: this.id,
264
- // contentType form-urlencoded → sérialisation JSON string requise.
265
- inputKeys: JSON.stringify(params.inputKeys),
266
- };
267
- // EndpointApi.call retourne le body HTTP ; succès serveur = {result: true, data: {inputKey: …}}.
268
- // Quirk json_encode PHP : un catalogue vide (par clé, ou tout `data`) arrive en `[]` au lieu
269
- // de `{}` — on normalise pour garantir le type map au caller.
270
- const body = (await this.endpointApi.getCoformCatalogs(requestData)) as {
271
- result?: boolean;
272
- data?: Record<string, Record<string, CommonTableCatalogEntry> | []> | [];
273
- };
274
- const data = body?.data;
275
- if (!data || typeof data !== "object" || Array.isArray(data)) return {};
276
- const catalogs: CommonTableCatalogs = {};
277
- for (const [inputKey, catalog] of Object.entries(data)) {
278
- catalogs[inputKey] = catalog && typeof catalog === "object" && !Array.isArray(catalog) ? catalog : {};
279
- }
280
- return catalogs;
281
- }
282
- }