@communecter/cocolight-api-client 1.0.155 → 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 (329) 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 +2 -0
  138. package/types/utils/OfflineClientManager.d.ts +8 -0
  139. package/dist/1035.cocolight-api-client.mjs.js +0 -1
  140. package/dist/1483.cocolight-api-client.mjs.js +0 -1
  141. package/dist/1491.cocolight-api-client.mjs.js +0 -1
  142. package/dist/1494.cocolight-api-client.mjs.js +0 -1
  143. package/dist/1641.cocolight-api-client.mjs.js +0 -1
  144. package/dist/1678.cocolight-api-client.mjs.js +0 -1
  145. package/dist/2041.cocolight-api-client.mjs.js +0 -1
  146. package/dist/2302.cocolight-api-client.mjs.js +0 -1
  147. package/dist/2313.cocolight-api-client.mjs.js +0 -1
  148. package/dist/2379.cocolight-api-client.mjs.js +0 -1
  149. package/dist/2439.cocolight-api-client.mjs.js +0 -1
  150. package/dist/2594.cocolight-api-client.mjs.js +0 -1
  151. package/dist/2766.cocolight-api-client.mjs.js +0 -1
  152. package/dist/2812.cocolight-api-client.mjs.js +0 -1
  153. package/dist/2918.cocolight-api-client.mjs.js +0 -1
  154. package/dist/3028.cocolight-api-client.mjs.js +0 -1
  155. package/dist/3330.cocolight-api-client.mjs.js +0 -1
  156. package/dist/3371.cocolight-api-client.mjs.js +0 -1
  157. package/dist/3401.cocolight-api-client.mjs.js +0 -1
  158. package/dist/3516.cocolight-api-client.mjs.js +0 -1
  159. package/dist/3593.cocolight-api-client.mjs.js +0 -1
  160. package/dist/3764.cocolight-api-client.mjs.js +0 -1
  161. package/dist/3873.cocolight-api-client.mjs.js +0 -1
  162. package/dist/3911.cocolight-api-client.mjs.js +0 -1
  163. package/dist/4031.cocolight-api-client.mjs.js +0 -1
  164. package/dist/4152.cocolight-api-client.mjs.js +0 -1
  165. package/dist/4203.cocolight-api-client.mjs.js +0 -1
  166. package/dist/424.cocolight-api-client.mjs.js +0 -1
  167. package/dist/435.cocolight-api-client.mjs.js +0 -1
  168. package/dist/4402.cocolight-api-client.mjs.js +0 -1
  169. package/dist/4425.cocolight-api-client.mjs.js +0 -1
  170. package/dist/4472.cocolight-api-client.mjs.js +0 -1
  171. package/dist/4914.cocolight-api-client.mjs.js +0 -1
  172. package/dist/4959.cocolight-api-client.mjs.js +0 -1
  173. package/dist/5100.cocolight-api-client.mjs.js +0 -1
  174. package/dist/5111.cocolight-api-client.mjs.js +0 -1
  175. package/dist/5286.cocolight-api-client.mjs.js +0 -1
  176. package/dist/5380.cocolight-api-client.mjs.js +0 -1
  177. package/dist/5383.cocolight-api-client.mjs.js +0 -1
  178. package/dist/5480.cocolight-api-client.mjs.js +0 -1
  179. package/dist/5541.cocolight-api-client.mjs.js +0 -1
  180. package/dist/5839.cocolight-api-client.mjs.js +0 -1
  181. package/dist/5862.cocolight-api-client.mjs.js +0 -1
  182. package/dist/5869.cocolight-api-client.mjs.js +0 -1
  183. package/dist/588.cocolight-api-client.mjs.js +0 -1
  184. package/dist/601.cocolight-api-client.mjs.js +0 -1
  185. package/dist/6012.cocolight-api-client.mjs.js +0 -1
  186. package/dist/6200.cocolight-api-client.mjs.js +0 -1
  187. package/dist/6369.cocolight-api-client.mjs.js +0 -1
  188. package/dist/7009.cocolight-api-client.mjs.js +0 -1
  189. package/dist/725.cocolight-api-client.mjs.js +0 -1
  190. package/dist/7339.cocolight-api-client.mjs.js +0 -1
  191. package/dist/7398.cocolight-api-client.mjs.js +0 -1
  192. package/dist/7888.cocolight-api-client.mjs.js +0 -1
  193. package/dist/7975.cocolight-api-client.mjs.js +0 -1
  194. package/dist/809.cocolight-api-client.mjs.js +0 -1
  195. package/dist/8300.cocolight-api-client.mjs.js +0 -1
  196. package/dist/8317.cocolight-api-client.mjs.js +0 -1
  197. package/dist/8525.cocolight-api-client.mjs.js +0 -1
  198. package/dist/8894.cocolight-api-client.mjs.js +0 -1
  199. package/dist/9301.cocolight-api-client.mjs.js +0 -1
  200. package/dist/9438.cocolight-api-client.mjs.js +0 -1
  201. package/dist/9478.cocolight-api-client.mjs.js +0 -1
  202. package/dist/9568.cocolight-api-client.mjs.js +0 -1
  203. package/dist/cocolight-api-client.mjs.js +0 -1
  204. package/src/Api.ts +0 -348
  205. package/src/ApiClient.ts +0 -1994
  206. package/src/EJSONType.ts +0 -103
  207. package/src/api/Action.ts +0 -665
  208. package/src/api/Answer.ts +0 -1392
  209. package/src/api/Badge.ts +0 -143
  210. package/src/api/BaseEntity.ts +0 -6384
  211. package/src/api/Classified.ts +0 -175
  212. package/src/api/Comment.ts +0 -280
  213. package/src/api/EndpointApi.ts +0 -2270
  214. package/src/api/EndpointApi.types.ts +0 -6566
  215. package/src/api/EntityRegistry.ts +0 -324
  216. package/src/api/Event.ts +0 -360
  217. package/src/api/Form.ts +0 -282
  218. package/src/api/News.ts +0 -547
  219. package/src/api/Notifications.ts +0 -196
  220. package/src/api/Organization.ts +0 -771
  221. package/src/api/Poi.ts +0 -242
  222. package/src/api/Project.ts +0 -545
  223. package/src/api/User.ts +0 -1889
  224. package/src/api/UserApi.ts +0 -192
  225. package/src/api/serverDataType/Action.ts +0 -177
  226. package/src/api/serverDataType/Answer.ts +0 -106
  227. package/src/api/serverDataType/Classified.ts +0 -152
  228. package/src/api/serverDataType/Comment.ts +0 -88
  229. package/src/api/serverDataType/Country.ts +0 -1
  230. package/src/api/serverDataType/Event.ts +0 -112
  231. package/src/api/serverDataType/Form.ts +0 -157
  232. package/src/api/serverDataType/News.ts +0 -138
  233. package/src/api/serverDataType/Notification.ts +0 -81
  234. package/src/api/serverDataType/Organization.ts +0 -111
  235. package/src/api/serverDataType/Poi.ts +0 -75
  236. package/src/api/serverDataType/Project.ts +0 -115
  237. package/src/api/serverDataType/User.ts +0 -112
  238. package/src/api/serverDataType/Zone.ts +0 -33
  239. package/src/api/serverDataType/common.ts +0 -84
  240. package/src/costum/normalize.ts +0 -7
  241. package/src/costum/registry.ts +0 -138
  242. package/src/costum/runtime-map.ts +0 -221
  243. package/src/costum/runtime.ts +0 -274
  244. package/src/costum/schemas/CercleTravailleursSociauxLiberauxLaPlumeSociale.ts +0 -19
  245. package/src/costum/schemas/FabEn.ts +0 -19
  246. package/src/costum/schemas/LivingLabInnovationSocialeBraspanon.ts +0 -19
  247. package/src/costum/schemas/alfph.ts +0 -27
  248. package/src/costum/schemas/campagne.ts +0 -19
  249. package/src/costum/schemas/chtitube.ts +0 -19
  250. package/src/costum/schemas/circuitCourt.ts +0 -19
  251. package/src/costum/schemas/cmcasHauteBretagne.ts +0 -19
  252. package/src/costum/schemas/coFinancementTierslieux.ts +0 -27
  253. package/src/costum/schemas/coeurNumerique.ts +0 -19
  254. package/src/costum/schemas/communLundi.ts +0 -19
  255. package/src/costum/schemas/cressReunion.ts +0 -35
  256. package/src/costum/schemas/cressReunionNetwork.ts +0 -35
  257. package/src/costum/schemas/ctenat.ts +0 -43
  258. package/src/costum/schemas/cyberReunion.ts +0 -19
  259. package/src/costum/schemas/ekisphere.ts +0 -35
  260. package/src/costum/schemas/equipementsSportifs974.ts +0 -19
  261. package/src/costum/schemas/federationDesCae.ts +0 -19
  262. package/src/costum/schemas/formationGenerique.ts +0 -35
  263. package/src/costum/schemas/franceTierslieux.ts +0 -19
  264. package/src/costum/schemas/hinaura.ts +0 -27
  265. package/src/costum/schemas/hubmayotte.ts +0 -19
  266. package/src/costum/schemas/hubnouvellecaledonie.ts +0 -19
  267. package/src/costum/schemas/hubpolynesiefrancaise.ts +0 -19
  268. package/src/costum/schemas/hubreunion.ts +0 -19
  269. package/src/costum/schemas/hubterritoires.ts +0 -19
  270. package/src/costum/schemas/hubwallisetfutuna.ts +0 -19
  271. package/src/costum/schemas/hva.ts +0 -27
  272. package/src/costum/schemas/ibv2.ts +0 -19
  273. package/src/costum/schemas/institutBleu.ts +0 -19
  274. package/src/costum/schemas/journalInsoumisChambery.ts +0 -27
  275. package/src/costum/schemas/kpacite.ts +0 -19
  276. package/src/costum/schemas/laCompagnieDesTierslieux.ts +0 -43
  277. package/src/costum/schemas/laMaisonDesFaiseurs.ts +0 -19
  278. package/src/costum/schemas/laReunionPourUnNumeriqueInclusif.ts +0 -19
  279. package/src/costum/schemas/laSemaineDesTierslieux.ts +0 -19
  280. package/src/costum/schemas/labEnCommuns.ts +0 -19
  281. package/src/costum/schemas/lakou.ts +0 -27
  282. package/src/costum/schemas/lesCommunsDesTierslieux.ts +0 -19
  283. package/src/costum/schemas/mayottePourUnNumeriqueInclusif.ts +0 -19
  284. package/src/costum/schemas/meir.ts +0 -27
  285. package/src/costum/schemas/navigatorDesTierslieux.ts +0 -19
  286. package/src/costum/schemas/notragora.ts +0 -27
  287. package/src/costum/schemas/nouvellecaledoniePourUnNumeriqueInclusif.ts +0 -19
  288. package/src/costum/schemas/openAtlas.ts +0 -19
  289. package/src/costum/schemas/polynesieFrancaisePourUnNumeriqueInclusif.ts +0 -19
  290. package/src/costum/schemas/prdr.ts +0 -19
  291. package/src/costum/schemas/reseauTierslieux.ts +0 -19
  292. package/src/costum/schemas/rfflabs.ts +0 -19
  293. package/src/costum/schemas/ries.ts +0 -19
  294. package/src/costum/schemas/siteDuPactePourLaTransition.ts +0 -27
  295. package/src/costum/schemas/sportSanteBienetre.ts +0 -43
  296. package/src/costum/schemas/suppa.ts +0 -19
  297. package/src/costum/schemas/terramies.ts +0 -19
  298. package/src/costum/schemas/testeTplFormation.ts +0 -35
  299. package/src/costum/schemas/tierslieuxbelgique.ts +0 -19
  300. package/src/costum/schemas/tierslieuxorg1.ts +0 -35
  301. package/src/costum/schemas/transiter.ts +0 -35
  302. package/src/costum/schemas/vhelioPeiTour2025.ts +0 -19
  303. package/src/costum/schemas/wallisetfutunaPourUnNumeriqueInclusif.ts +0 -19
  304. package/src/costum/symbol.ts +0 -26
  305. package/src/costum/types.ts +0 -895
  306. package/src/endpoints.module.ts +0 -4253
  307. package/src/error.ts +0 -86
  308. package/src/forms/entityForm.ts +0 -142
  309. package/src/index.ts +0 -161
  310. package/src/mixin/UserMixin.ts +0 -4
  311. package/src/types/api-responses.ts +0 -217
  312. package/src/types/entities.ts +0 -58
  313. package/src/types/error-guards.ts +0 -230
  314. package/src/types/index.ts +0 -41
  315. package/src/types/payloads.ts +0 -21
  316. package/src/types/transforms.ts +0 -119
  317. package/src/utils/FileOfflineStorageStrategy.node.ts +0 -50
  318. package/src/utils/FileStorageStrategy.node.ts +0 -63
  319. package/src/utils/MultiServerFileStorageStrategy.node.ts +0 -67
  320. package/src/utils/MultiServerTokenStorageStrategy.ts +0 -139
  321. package/src/utils/OfflineClientManager.ts +0 -216
  322. package/src/utils/OfflineQueueStorageStrategy.ts +0 -47
  323. package/src/utils/TokenStorage.ts +0 -77
  324. package/src/utils/compat.ts +0 -12
  325. package/src/utils/createDefaultMultiServerTokenStorageStrategy.ts +0 -35
  326. package/src/utils/createDefaultOfflineStrategy.ts +0 -34
  327. package/src/utils/createDefaultTokenStorageStrategy.ts +0 -33
  328. package/src/utils/reactive.ts +0 -243
  329. package/src/utils/stream-utils.node.ts +0 -12
@@ -1,274 +0,0 @@
1
- /**
2
- * Runtime `CostumScope` — porte un *contexte costum* sur les créations/éditions d'entités.
3
- *
4
- * const tl = await me.costum("reseauTierslieux");
5
- * const org = await tl.organization({ name, manageModel, buildingSurfaceArea });
6
- * await org.save(); // -> element/save AVEC costumSlug + champs costum validés par le binding du costum
7
- *
8
- * Décisions (cf. docs costum-fields / map CostumScope) :
9
- * - **scope PAR COSTUM** : un même nom de champ peut avoir un type différent selon le costum.
10
- * - **création** : les champs costum partent dans `element/save` (les hooks legacy `prepData`/
11
- * `elementAfterSave` les voient). Les 3 couches de filtrage de la lib (draft, extraction bloc ADD,
12
- * AJV réseau) sont ouvertes via `_costumCtx` porté par l'instance (jamais via `VIRTUAL_SCHEMAS` statique).
13
- * - **collection non couverte par le costum** : scope = no-op (champs costum = {}), on reste en standard.
14
- * - **known only (inc1)** : slug absent du registry => erreur. Le live-fetch d'un costum inconnu = inc2.
15
- */
16
- import { ApiError } from "../error.js";
17
- import { COSTUM_META, COSTUM_SCHEMAS } from "./registry.js";
18
- import { COSTUM_RUNTIME } from "./runtime-map.js";
19
-
20
- import type { CostumExtensionModule, CostumExtensionField, KnownCostumSlug, Collection } from "./types.js";
21
- import type { BaseEntity } from "../api/BaseEntity.js";
22
- import type { GetElementsKeyResponse } from "../types/api-responses.js";
23
-
24
- /**
25
- * Contexte costum résolu, attaché à une instance d'entité via `config.costumCtx`.
26
- * Porté tel quel par `BaseEntity._costumCtx` et consommé par les 3 couches de filtrage.
27
- */
28
- export interface CostumRuntimeContext {
29
- /** slug du costum (= clé envoyée en `costumSlug`, source du `source.key` côté backend). */
30
- slug: string;
31
- /** id de l'élément porteur du costum (collection `costumType`). */
32
- costumId: string;
33
- /** collection de l'élément porteur (organizations/projects/events…) → `costumType`. */
34
- costumType: string;
35
- /** collection de l'entité CRÉÉE sous ce scope (poi/organizations/…) — clé d'index du module. */
36
- collection: Collection;
37
- /** schéma AJV permissif {type:object, additionalProperties:true, properties:{…}} des champs costum. */
38
- schema: { type: "object"; additionalProperties: true; properties: Record<string, unknown> };
39
- /** champs costum (path/setType/arrayForm) — dispatch updateField à l'édition. */
40
- fields: CostumExtensionField[];
41
- /** valeurs par défaut costum (presetValue) — appliquées en data, surchargeables par l'appelant. */
42
- presets: Record<string, unknown>;
43
- /** champs masqués (onload hide) — non éditables. */
44
- hidden: string[];
45
- }
46
-
47
- // ── Descripteur de formulaire costum (neutre : ne dépend PAS de site-json) ───────
48
- /** Type logique d'un champ costum, pour la génération de formulaire côté consommateur. */
49
- export type CostumFieldType = "string" | "number" | "boolean" | "date" | "array" | "object";
50
-
51
- /** Champ costum décrit pour un formulaire (dérivé du schéma lazy enrichi : type/enum/multiple). */
52
- export interface CostumFieldDescriptor {
53
- name: string;
54
- path: string;
55
- type: CostumFieldType;
56
- multiple: boolean;
57
- /** Options de choix (select/multiselect). Absent si champ libre. */
58
- enum?: (string | number)[];
59
- /** Champ masqué (onload hide) — à exclure du formulaire. */
60
- hidden: boolean;
61
- }
62
-
63
- /**
64
- * Description NEUTRE d'un formulaire costum pour une collection — projection runtime des métadonnées
65
- * (champs + type/enum/multiple, presets, hidden, add, createLabel). Le consommateur (ex. site-json)
66
- * en dérive son propre format de form. AUCUN libellé humain n'existe dans la source (label = nom).
67
- */
68
- export interface CostumFormDescriptor {
69
- slug: string;
70
- collection: Collection;
71
- costumId: string;
72
- costumType: string;
73
- add: boolean;
74
- createLabel: string | null;
75
- presets: Record<string, unknown>;
76
- /** Noms de champs MASQUÉS (legacy `dynForm hide`) — base ET costum (ex. type/tags/role pour tiers-lieu).
77
- * Le consommateur les exclut du formulaire (les champs costum portent aussi `hidden` par champ). */
78
- hidden: string[];
79
- fields: CostumFieldDescriptor[];
80
- }
81
-
82
- /** Type logique d'un champ depuis ses métadonnées runtime enrichies (multiple → array, x-format date → date). */
83
- function costumFieldType(f: CostumExtensionField): CostumFieldType {
84
- if (f.multiple) return "array";
85
- if (f.format === "date") return "date";
86
- switch (f.type) {
87
- case "number": case "integer": return "number";
88
- case "boolean": return "boolean";
89
- case "array": return "array";
90
- case "object": return "object";
91
- default: return "string";
92
- }
93
- }
94
-
95
- /** Collections couvertes par les fabriques du scope (poi/organization/project/event). Identité entityType↔collection. */
96
- type ScopeCollection = "poi" | "organizations" | "projects" | "events";
97
-
98
- /**
99
- * Scope costum : fabrique des entités liées à un costum. Réutilise le `user` (parent, deps, auth)
100
- * et n'altère jamais l'état partagé — chaque entité reçoit son propre `_costumCtx`.
101
- */
102
- export class CostumScope {
103
- readonly slug: KnownCostumSlug | (string & {});
104
- private readonly user: BaseEntity;
105
- private readonly module: CostumExtensionModule;
106
- private readonly costumId: string;
107
- private readonly costumType: string;
108
-
109
- constructor(user: BaseEntity, slug: KnownCostumSlug | (string & {}), module: CostumExtensionModule, costumId: string, costumType: string) {
110
- this.user = user;
111
- this.slug = slug;
112
- this.module = module;
113
- this.costumId = costumId;
114
- this.costumType = costumType;
115
- }
116
-
117
- /** Construit le `CostumRuntimeContext` pour une collection donnée (null si le costum ne la couvre pas). */
118
- contextFor(collection: Collection): CostumRuntimeContext | null {
119
- const ext = this.module.collections[collection];
120
- if (!ext) return null;
121
- const props = (ext.schema as { properties?: Record<string, unknown> }).properties ?? {};
122
- return {
123
- slug: this.slug,
124
- costumId: this.costumId,
125
- costumType: this.costumType,
126
- collection,
127
- schema: { type: "object", additionalProperties: true, properties: props },
128
- fields: ext.fields,
129
- presets: ext.presets ?? {},
130
- hidden: ext.hidden ?? [],
131
- };
132
- }
133
-
134
- /** Crée une entité de `collection` sous ce costum (presets appliqués, surchargeables par `data`). */
135
- private async create<T extends ScopeCollection>(collection: T, data: Record<string, unknown> = {}) {
136
- const ctx = this.contextFor(collection);
137
- // Collection non couverte => comportement standard (aucun champ costum injecté), mais on garde
138
- // le costumSlug : l'élément reste rattaché au costum (source.key) même sans champ spécifique.
139
- const merged = ctx ? { ...ctx.presets, ...data } : { ...data };
140
- const costumCtx = ctx ?? {
141
- slug: this.slug, costumId: this.costumId, costumType: this.costumType,
142
- collection, schema: { type: "object" as const, additionalProperties: true as const, properties: {} },
143
- fields: [], presets: {}, hidden: [],
144
- };
145
- return this.user.entity(collection, merged, { costumCtx });
146
- }
147
-
148
- poi(data: Record<string, unknown> = {}) { return this.create("poi", data); }
149
- organization(data: Record<string, unknown> = {}) { return this.create("organizations", data); }
150
- project(data: Record<string, unknown> = {}) { return this.create("projects", data); }
151
- event(data: Record<string, unknown> = {}) { return this.create("events", data); }
152
-
153
- /**
154
- * Décrit le FORMULAIRE costum d'une collection (null si non couverte) — projection NEUTRE des
155
- * métadonnées runtime (champs typés + enum/multiple, presets, hidden, add, createLabel). Le module
156
- * étant déjà chargé (scope obtenu via `me.costum(slug)`), c'est SYNCHRONE. Le consommateur (site-json)
157
- * en dérive son format de form. NB : pas de libellé humain dans la source → label = nom du champ.
158
- */
159
- describeForm(collection: Collection): CostumFormDescriptor | null {
160
- const ext = this.module.collections[collection];
161
- if (!ext) return null;
162
- const hidden = new Set(ext.hidden ?? []);
163
- const fields: CostumFieldDescriptor[] = ext.fields.map((f) => ({
164
- name: f.name,
165
- path: f.path,
166
- type: costumFieldType(f),
167
- multiple: f.multiple === true,
168
- ...(f.enum && f.enum.length ? { enum: f.enum } : {}),
169
- hidden: hidden.has(f.name),
170
- }));
171
- return {
172
- slug: this.slug,
173
- collection,
174
- costumId: this.costumId,
175
- costumType: this.costumType,
176
- add: ext.add ?? false,
177
- createLabel: ext.createLabel ?? null,
178
- presets: ext.presets ?? {},
179
- hidden: ext.hidden ?? [],
180
- fields,
181
- };
182
- }
183
- }
184
-
185
- /**
186
- * Dérive un `CostumRuntimeContext` SYNCHRONE depuis le `source.key` d'un élément CHARGÉ + sa collection
187
- * (inc2). Permet aux entités revifiées hors scope (`fromServerData` des résultats `searchCostum`,
188
- * `me.poi({id})`) de retrouver leurs champs costum (writable + dispatch) sans `me.costum(slug)`.
189
- * Utilise la map bundlée `COSTUM_RUNTIME` (sync) + `COSTUM_META`. Renvoie null si le costum/collection est
190
- * inconnu (costum hors registry → résolution live = inc2b).
191
- */
192
- export function resolveCostumCtxFromSource(sourceKey: string | undefined | null, collection: Collection): CostumRuntimeContext | null {
193
- if (!sourceKey) return null;
194
- const entry = COSTUM_RUNTIME[sourceKey]?.[collection];
195
- const meta = COSTUM_META[sourceKey as KnownCostumSlug];
196
- if (!entry) {
197
- // Pas d'overlay de champs pour (sourceKey, collection). Si le costum est CONNU (meta présent), on
198
- // reconnaît quand même le scope (source.key = identité) via un ctx NU (fields:[]) — l'élément est
199
- // rattaché au costum sans champ spécifique. Costum hors registry → null (résolution live = inc1b).
200
- if (!meta) return null;
201
- return {
202
- slug: sourceKey,
203
- costumId: meta.costumId,
204
- costumType: meta.costumType,
205
- collection,
206
- schema: { type: "object", additionalProperties: true, properties: {} },
207
- fields: [],
208
- presets: {},
209
- hidden: [],
210
- };
211
- }
212
- const props = (entry.schema as { properties?: Record<string, unknown> }).properties ?? {};
213
- return {
214
- slug: sourceKey,
215
- costumId: meta?.costumId ?? "",
216
- costumType: meta?.costumType ?? collection,
217
- collection,
218
- schema: { type: "object", additionalProperties: true, properties: props },
219
- fields: entry.fields,
220
- presets: entry.presets ?? {},
221
- hidden: entry.hidden ?? [],
222
- };
223
- }
224
-
225
- /** Module costum « nu » (scope d'IDENTITÉ sans overlay de champs) : `collections` vide → `create()` no-op. */
226
- function fieldlessModule(slug: string): CostumExtensionModule {
227
- return { slug, collections: {} };
228
- }
229
-
230
- /**
231
- * Ouvre un scope costum FIELDLESS depuis une entité DÉJÀ CHARGÉE (zéro fetch) : `costumSlug` = slug de
232
- * l'entité (= `source.key` posé par le backend), `costumId/costumType` = l'entité porteuse. Pendant runtime
233
- * exact de `_withCostumContext` (BaseEntity), pour la voie « entité tenue » (un site nu sans form). Le
234
- * backend re-gate `found` sur l'existence d'un costum sur l'entité → un site sans costum n'estampille rien.
235
- */
236
- export function costumScopeFromEntity(user: BaseEntity, entity: BaseEntity): CostumScope {
237
- const sd = entity.serverData as { slug?: string | null; id?: string | null } | undefined;
238
- const slug = sd?.slug;
239
- const id = sd?.id;
240
- if (typeof slug !== "string" || slug.trim() === "") {
241
- throw new ApiError("me.costum(entity) : l'entité n'a pas de slug (charge-la d'abord).", 400);
242
- }
243
- if (typeof id !== "string" || !id) {
244
- throw new ApiError("me.costum(entity) : l'entité n'a pas d'id.", 400);
245
- }
246
- return new CostumScope(user, slug, fieldlessModule(slug), id, entity.getEntityType());
247
- }
248
-
249
- /**
250
- * Résout un `CostumScope` par SLUG pour un user connecté.
251
- * - slug à champs (meta + loader) → charge le module généré (code-split via dynamic import).
252
- * - slug CONNU sans loader (fieldless) → scope d'identité nu (`collections:{}`).
253
- * - slug HORS registry → résolution LIVE via `slug/getinfo` (contextId/contextType) → scope nu (tier 3b).
254
- */
255
- export async function resolveCostumScope(user: BaseEntity, slug: KnownCostumSlug | (string & {})): Promise<CostumScope> {
256
- const meta = COSTUM_META[slug as KnownCostumSlug];
257
- const loader = COSTUM_SCHEMAS[slug as KnownCostumSlug];
258
- if (meta && loader) {
259
- const { default: module } = await loader();
260
- return new CostumScope(user, slug, module, meta.costumId, meta.costumType);
261
- }
262
- if (meta) {
263
- // Connu mais sans overlay de champs : scope d'identité pur (estampille source.key, aucun champ costum).
264
- return new CostumScope(user, slug, fieldlessModule(slug), meta.costumId, meta.costumType);
265
- }
266
- // Tier 3b — slug HORS registry : résolution LIVE slug → {contextId, contextType} via la route `slug/getinfo`
267
- // (GET_ELEMENTS_KEY, « none »). Couvre les sites fieldless/cold/futurs sans rien bundler. costumSlug = le slug
268
- // demandé (slug ENTITÉ) ; le backend re-gate `found` sur l'existence d'un costum sur l'entité résolue.
269
- const info = await user.endpointApi.getElementsKey({ pathParams: { slug } }) as GetElementsKeyResponse;
270
- if (info?.contextId && info?.contextType) {
271
- return new CostumScope(user, slug, fieldlessModule(slug), String(info.contextId), String(info.contextType));
272
- }
273
- throw new ApiError(`Costum inconnu : "${slug}" — slug introuvable (résolution live slug/getinfo).`, 404);
274
- }
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "CercleTravailleursSociauxLiberauxLaPlumeSociale",
8
- collections: {
9
- organizations: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"formLocality":{"type":"string"},"info":{"type":"string"}}},
11
- fields: [{"name":"formLocality","path":"formLocality","type":"string"},{"name":"info","path":"info","type":"string"}],
12
- presets: {"type":"LocalBusiness","role":"admin","preferences[isOpenEdition]":false,"preferences[isOpenData]":false},
13
- hidden: ["role","shortDescription","tags","type"],
14
- add: true,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "FabEn",
8
- collections: {
9
- organizations: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"theme":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
11
- fields: [{"name":"theme","path":"theme"}],
12
- presets: {},
13
- hidden: [],
14
- add: true,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "LivingLabInnovationSocialeBraspanon",
8
- collections: {
9
- organizations: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"theme":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
11
- fields: [{"name":"theme","path":"theme"}],
12
- presets: {},
13
- hidden: [],
14
- add: true,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,27 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "alfph",
8
- collections: {
9
- projects: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"formLocality":{"type":"string"},"theme":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
11
- fields: [{"name":"formLocality","path":"formLocality","type":"string"},{"name":"theme","path":"theme","enum":["Valorisation des circuits courts","Lutte contre l'isolement (notamment des personnes fragiles)","Lutte contre l'illettrisme","Echanges de savoirs, entraide, et soutien scolaire","Valorisation et découverte du patrimoine et de l’histoire locale","Créativité artistique","Innovation sociale","Démocratie numérique","Insertion par l'économique","Transition énergétique et écologique"],"multiple":true}],
12
- presets: {},
13
- hidden: [],
14
- add: true,
15
- createLabel: null,
16
- },
17
- ressources: {
18
- schema: {"type":"object","additionalProperties":true,"properties":{"formLocality":{"type":"string"}}},
19
- fields: [{"name":"formLocality","path":"formLocality","type":"string"}],
20
- presets: {"section":"need","category":"service"},
21
- hidden: [],
22
- add: true,
23
- createLabel: null,
24
- },
25
- },
26
- };
27
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "campagne",
8
- collections: {
9
- proposal: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"devis":{"type":"string"},"estimationTime":{"type":"string"}}},
11
- fields: [{"name":"devis","path":"devis","type":"string"},{"name":"estimationTime","path":"estimationTime","type":"string"}],
12
- presets: {"tags":"nouvelle idée,co,communecter","voteDateEnd":"31/12/2019 23:59","voteAnonymous":false,"voteCanChange":true,"majority":50,"amendementAndVote":false,"amendementActivated":false,"multiChoicecheckboxSimple":false},
13
- hidden: [],
14
- add: true,
15
- createLabel: "Proposer un projet, fonctionalité",
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "chtitube",
8
- collections: {
9
- poi: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"sectionBtn":{"type":"string"}}},
11
- fields: [{"name":"sectionBtn","path":"sectionBtn","type":"string"}],
12
- presets: {},
13
- hidden: ["parent"],
14
- add: true,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "circuitCourt",
8
- collections: {
9
- organizations: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"phone":{"type":"number"}}},
11
- fields: [{"name":"phone","path":"phone","type":"number"}],
12
- presets: {},
13
- hidden: [],
14
- add: true,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "cmcasHauteBretagne",
8
- collections: {
9
- events: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"phone":{"type":"string"}}},
11
- fields: [{"name":"phone","path":"phone","type":"string"}],
12
- presets: {},
13
- hidden: ["parent"],
14
- add: true,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,27 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "coFinancementTierslieux",
8
- collections: {
9
- crowdfunding: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"donationLink":{"type":"string"},"invoiceAddress":{"type":"string"},"invoiceName":{"type":"string"},"invoiceSiret":{"type":"string"},"linkToCommon":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"orgaName":{"type":"string"},"priority":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"similarLink":{"type":"string"}}},
11
- fields: [{"name":"donationLink","path":"donationLink","type":"string"},{"name":"invoiceAddress","path":"invoiceAddress","type":"string"},{"name":"invoiceName","path":"invoiceName","type":"string"},{"name":"invoiceSiret","path":"invoiceSiret","type":"string"},{"name":"linkToCommon","path":"linkToCommon"},{"name":"orgaName","path":"orgaName","type":"string"},{"name":"priority","path":"priority"},{"name":"similarLink","path":"similarLink","type":"string"}],
12
- presets: {"type":"campaign"},
13
- hidden: [],
14
- add: false,
15
- createLabel: "Campagne",
16
- },
17
- projects: {
18
- schema: {"type":"object","additionalProperties":true,"properties":{"preferences[crowdfunding]":{"type":"string"}}},
19
- fields: [{"name":"preferences[crowdfunding]","path":"preferences[crowdfunding]","type":"string"}],
20
- presets: {},
21
- hidden: [],
22
- add: true,
23
- createLabel: "Commun",
24
- },
25
- },
26
- };
27
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "coeurNumerique",
8
- collections: {
9
- badges: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"info":{"type":"object","additionalProperties":true}}},
11
- fields: [{"name":"info","path":"info","type":"object"}],
12
- presets: {"tags":{"value":"","forced":true}},
13
- hidden: ["color","icon","tags"],
14
- add: false,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,19 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "communLundi",
8
- collections: {
9
- events: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"animator":{"type":"object","additionalProperties":true},"common":{"type":"object","additionalProperties":true},"documentation":{"type":"string"},"pattern":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
11
- fields: [{"name":"animator","path":"animator","type":"object"},{"name":"common","path":"common","type":"object"},{"name":"documentation","path":"documentation","type":"string"},{"name":"pattern","path":"pattern","enum":["Aucun"]}],
12
- presets: {},
13
- hidden: ["parent","public","recurrency","tags"],
14
- add: true,
15
- createLabel: null,
16
- },
17
- },
18
- };
19
- export default mod;
@@ -1,35 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "cressReunion",
8
- collections: {
9
- events: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"expectedAttendees":{"type":"number"},"format":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"isPaying":{"type":"boolean"},"lowMobilityAccess":{"type":"boolean"},"mailReminder":{"type":"array","items":{"type":"string"}},"monthEss":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"preferences[isOpenEdition]":{"type":"string"},"registrationRequired":{"type":"boolean"},"tergetPublic":{"type":"array","items":{"type":"string"}},"thematicWeek":{"type":"string"},"theme":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
11
- fields: [{"name":"expectedAttendees","path":"expectedAttendees","type":"number"},{"name":"format","path":"format","enum":["Physique","En ligne (Webinaire, webcast, etc)","Les deux, présentiel et distanciel"]},{"name":"isPaying","path":"isPaying","type":"boolean"},{"name":"lowMobilityAccess","path":"lowMobilityAccess","type":"boolean"},{"name":"mailReminder","path":"mailReminder","type":"array"},{"name":"monthEss","path":"monthEss","enum":["Oui","Non"]},{"name":"preferences[isOpenEdition]","path":"preferences[isOpenEdition]","type":"string"},{"name":"registrationRequired","path":"registrationRequired","type":"boolean"},{"name":"tergetPublic","path":"tergetPublic","type":"array"},{"name":"thematicWeek","path":"thematicWeek","type":"string"},{"name":"theme","path":"theme","enum":["économie circulaire","silver économie","agriculture / agroalimentaire","batiment","énergies renouvelables","digital numérique","Médico social","Santé","Ecoconstruction","REP","IAE","Textile","logistqiue","textiles"],"multiple":true}],
12
- presets: {},
13
- hidden: [],
14
- add: true,
15
- createLabel: null,
16
- },
17
- organizations: {
18
- schema: {"type":"object","additionalProperties":true,"properties":{"ambassadeurFirstName":{"type":"string"},"ambassadeurFonction":{"type":"string"},"ambassadeurMail":{"type":"string"},"ambassadeurName":{"type":"string"},"ambassadeurTel":{"type":"number"},"apet700":{"type":"string"},"arrondissement":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"famille":{"type":"string"},"interco":{"type":"string"},"preferences[isOpenEdition]":{"type":"string"},"secteurEntreprise":{"type":"string"},"secteurEtablissement":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"typeEtablissement":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"waldec":{"type":"string"}}},
19
- fields: [{"name":"ambassadeurFirstName","path":"ambassadeurFirstName","type":"string"},{"name":"ambassadeurFonction","path":"ambassadeurFonction","type":"string"},{"name":"ambassadeurMail","path":"ambassadeurMail","type":"string"},{"name":"ambassadeurName","path":"ambassadeurName","type":"string"},{"name":"ambassadeurTel","path":"ambassadeurTel","type":"number"},{"name":"apet700","path":"apet700","type":"string"},{"name":"arrondissement","path":"arrondissement","enum":["NORD","OUEST","SUD","EST"]},{"name":"famille","path":"famille","type":"string"},{"name":"interco","path":"interco","type":"string"},{"name":"preferences[isOpenEdition]","path":"preferences[isOpenEdition]","type":"string"},{"name":"secteurEntreprise","path":"secteurEntreprise","type":"string"},{"name":"secteurEtablissement","path":"secteurEtablissement","enum":["Institution","Autres intermédiations monétaires","Comm. de gros céréales, tabac non manuf. et aliments pour bétail","Hébergement touristique et autre hébergement de courte durée","Activités des sièges sociaux","Action sociale sans hébergement n.c.a.","Activité des médecins généralistes","Formation continue d'adultes","Accueil ou accompagnement sans hébergement d'enfants handicapés","Accueil accompagn. sans héberg. adultes handicapés ou pers. âgées","Hébergement social pour handicapés mentaux et malades mentaux","Hébergement médicalisé pour enfants handicapés","Nettoyage courant des bâtiments","Aide par le travail","Héberg. médicalisé adultes handicapés & autre héberg. médicalisé","Hébergement social pour enfants en difficultés","Autres transports routiers de voyageurs","Enseignement supérieur","Autres assurances","Culture et élevage associés","Hébergement social pour adultes, familles en difficultés et autre","Hébergement médicalisé pour personnes âgées","Aut. accueil ou accompgnt sans hébergt d'enfants et adolescents","Aide à domicile","Commerces de détail d'optique","Soins de beauté","Enseignement primaire","Autres enseignements","Activités hospitalières","Activités comptables","Autres organisations fonctionnant par adhésion volontaire","Activités juridiques","Accueil de jeunes enfants","Hébergement social pour handicapés physiques","Transformation et conservation de fruits","Enseignement secondaire technique ou professionnel","Fabrication d'autres vêtements et accessoires","Autres activités de soutien aux entreprises n.c.a.","Services administratifs combinés de bureau","Autres services personnels n.c.a.","Activités des infirmiers et des sages-femmes","Culture de légumes, de melons, de racines et de tubercules","Restauration collective sous contrat","Autres activités liées au sport","Activités de clubs de sports"]},{"name":"typeEtablissement","path":"typeEtablissement","enum":["Association non employeuse","Association employeuse","SCOP (société coopérative et participative)","SCIC (société coopérative d'intérêt collectif)","Groupement d'Employeurs","CAE (coopérative d'activités et d'emploi)","Mutuelle","Banque Coopérative","Collectivité territoriale","Fondation","Autre Coopérative","Entreprise de l'ESS"]},{"name":"waldec","path":"waldec","type":"string"}],
20
- presets: {},
21
- hidden: [],
22
- add: true,
23
- createLabel: null,
24
- },
25
- projects: {
26
- schema: {"type":"object","additionalProperties":true,"properties":{"domain":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"ifPaye":{"type":"string"},"paye":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"preferences[isOpenEdition]":{"type":"string"},"referentName":{"type":"string"},"referentPhone":{"type":"number"},"yourAction":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"zoneActivity":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
27
- fields: [{"name":"domain","path":"domain","enum":["Activité physique","Bien-être","Garde d'enfants","Communication","Divertissement","Formation","Enseignement","Alimentation","Lien social","Services","Services à la personne","Culture - Art - Spectacle","Transport et livraison","Hébergement","Assurance","Épicerie","Santé","Dépannage","Numérique","Administratif","Financier","Environnement","Recyclage"]},{"name":"ifPaye","path":"ifPaye","type":"string"},{"name":"paye","path":"paye","enum":["Gratuite","Payante"]},{"name":"preferences[isOpenEdition]","path":"preferences[isOpenEdition]","type":"string"},{"name":"referentName","path":"referentName","type":"string"},{"name":"referentPhone","path":"referentPhone","type":"number"},{"name":"yourAction","path":"yourAction","enum":["était existante avant COVID 19","à été créée pour répondre à un besoin pendant le COVID 19"]},{"name":"zoneActivity","path":"zoneActivity","enum":["Saint-Denis","Saint-Pierre","Bras-Panon","Cilaos","Entre-Deux","La Possession","Le Port","Les Avirons","Les Trois-Bassins","Etang-salé","La Petite île","Le Tampon","La plaine des Palmistes","Salazie","Saint-Leu","Sainte-Marie","Sainte-Rose","Saint-André","Sainte-Suzanne","Saint-philippe","Saint-Louis","Saint-Paul","Saint-Benoît","Saint-Joseph","Sur toute l’île","Régional","National","International"]}],
28
- presets: {},
29
- hidden: [],
30
- add: true,
31
- createLabel: "Ajouter une action",
32
- },
33
- },
34
- };
35
- export default mod;
@@ -1,35 +0,0 @@
1
- // AUTO-GÉNÉRÉ par scripts/generate-costum-extensions.js — NE PAS ÉDITER.
2
- // Source : costum-extensions.json (vendoré). Régénérer : npm run generate:costum
3
-
4
- import type { CostumExtensionModule } from "../types.js";
5
-
6
- const mod: CostumExtensionModule = {
7
- slug: "cressReunionNetwork",
8
- collections: {
9
- events: {
10
- schema: {"type":"object","additionalProperties":true,"properties":{"format":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"monthEss":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"preferences[isOpenEdition]":{"type":"string"},"theme":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
11
- fields: [{"name":"format","path":"format","enum":["Physique","En ligne (Webinaire, webcast, etc)","Les deux, présentiel et distanciel"]},{"name":"monthEss","path":"monthEss","enum":["Oui","Non"]},{"name":"preferences[isOpenEdition]","path":"preferences[isOpenEdition]","type":"string"},{"name":"theme","path":"theme","enum":["économie circulaire","silver économie","agriculture / agroalimentaire","batiment","énergies renouvelables","digital numérique","Médico social","Santé","Ecoconstruction","REP","IAE","Textile","logistqiue","textiles"],"multiple":true}],
12
- presets: {},
13
- hidden: [],
14
- add: true,
15
- createLabel: null,
16
- },
17
- organizations: {
18
- schema: {"type":"object","additionalProperties":true,"properties":{"ambassadeurFirstName":{"type":"string"},"ambassadeurFonction":{"type":"string"},"ambassadeurMail":{"type":"string"},"ambassadeurName":{"type":"string"},"ambassadeurTel":{"type":"number"},"apet700":{"type":"string"},"arrondissement":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"famille":{"type":"string"},"interco":{"type":"string"},"preferences[isOpenEdition]":{"type":"string"},"secteurEntreprise":{"type":"string"},"secteurEtablissement":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"typeEtablissement":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"waldec":{"type":"string"}}},
19
- fields: [{"name":"ambassadeurFirstName","path":"ambassadeurFirstName","type":"string"},{"name":"ambassadeurFonction","path":"ambassadeurFonction","type":"string"},{"name":"ambassadeurMail","path":"ambassadeurMail","type":"string"},{"name":"ambassadeurName","path":"ambassadeurName","type":"string"},{"name":"ambassadeurTel","path":"ambassadeurTel","type":"number"},{"name":"apet700","path":"apet700","type":"string"},{"name":"arrondissement","path":"arrondissement","enum":["NORD","OUEST","SUD","EST"]},{"name":"famille","path":"famille","type":"string"},{"name":"interco","path":"interco","type":"string"},{"name":"preferences[isOpenEdition]","path":"preferences[isOpenEdition]","type":"string"},{"name":"secteurEntreprise","path":"secteurEntreprise","type":"string"},{"name":"secteurEtablissement","path":"secteurEtablissement","enum":["Autres intermédiations monétaires","Comm. de gros céréales, tabac non manuf. et aliments pour bétail","Hébergement touristique et autre hébergement de courte durée","Activités des sièges sociaux","Action sociale sans hébergement n.c.a.","Activité des médecins généralistes","Formation continue d'adultes","Accueil ou accompagnement sans hébergement d'enfants handicapés","Accueil accompagn. sans héberg. adultes handicapés ou pers. âgées","Hébergement social pour handicapés mentaux et malades mentaux","Hébergement médicalisé pour enfants handicapés","Nettoyage courant des bâtiments","Aide par le travail","Héberg. médicalisé adultes handicapés & autre héberg. médicalisé","Hébergement social pour enfants en difficultés","Autres transports routiers de voyageurs","Enseignement supérieur","Autres assurances","Culture et élevage associés","Hébergement social pour adultes, familles en difficultés et autre","Hébergement médicalisé pour personnes âgées","Aut. accueil ou accompgnt sans hébergt d'enfants et adolescents","Aide à domicile","Commerces de détail d'optique","Soins de beauté","Enseignement primaire","Autres enseignements","Activités hospitalières","Activités comptables","Autres organisations fonctionnant par adhésion volontaire","Activités juridiques","Accueil de jeunes enfants","Hébergement social pour handicapés physiques","Transformation et conservation de fruits","Enseignement secondaire technique ou professionnel","Fabrication d'autres vêtements et accessoires","Autres activités de soutien aux entreprises n.c.a.","Services administratifs combinés de bureau","Autres services personnels n.c.a.","Activités des infirmiers et des sages-femmes","Culture de légumes, de melons, de racines et de tubercules","Restauration collective sous contrat","Autres activités liées au sport","Activités de clubs de sports"]},{"name":"typeEtablissement","path":"typeEtablissement","enum":["Association non employeuse","Association employeuse","SCOP (société coopérative et participative)","SCIC (société coopérative d'intérêt collectif)","Groupement d'Employeurs","CAE (coopérative d'activités et d'emploi)","Mutuelle","Banque Coopérative","Fondation","Autre Coopérative","Entreprise de l'ESS"]},{"name":"waldec","path":"waldec","type":"string"}],
20
- presets: {},
21
- hidden: [],
22
- add: true,
23
- createLabel: null,
24
- },
25
- projects: {
26
- schema: {"type":"object","additionalProperties":true,"properties":{"domain":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"ifPaye":{"type":"string"},"paye":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"preferences[isOpenEdition]":{"type":"string"},"referentName":{"type":"string"},"referentPhone":{"type":"number"},"yourAction":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]},"zoneActivity":{"oneOf":[{"type":"string"},{"type":"array","items":{"type":"string"}}]}}},
27
- fields: [{"name":"domain","path":"domain","enum":["Activité physique","Bien-être","Garde d'enfants","Communication","Divertissement","Formation","Enseignement","Alimentation","Lien social","Services","Services à la personne","Culture - Art - Spectacle","Transport et livraison","Hébergement","Assurance","Épicerie","Santé","Dépannage","Numérique","Administratif","Financier","Environnement","Recyclage"]},{"name":"ifPaye","path":"ifPaye","type":"string"},{"name":"paye","path":"paye","enum":["Gratuite","Payante"]},{"name":"preferences[isOpenEdition]","path":"preferences[isOpenEdition]","type":"string"},{"name":"referentName","path":"referentName","type":"string"},{"name":"referentPhone","path":"referentPhone","type":"number"},{"name":"yourAction","path":"yourAction","enum":["était existante avant COVID 19","à été créée pour répondre à un besoin pendant le COVID 19"]},{"name":"zoneActivity","path":"zoneActivity","enum":["Saint-Denis","Saint-Pierre","Bras-Panon","Cilaos","Entre-Deux","La Possession","Le Port","Les Avirons","Les Trois-Bassins","Etang-salé","La Petite île","Le Tampon","La plaine des Palmistes","Salazie","Saint-Leu","Sainte-Marie","Sainte-Rose","Saint-André","Sainte-Suzanne","Saint-philippe","Saint-Louis","Saint-Paul","Saint-Benoît","Saint-Joseph","Sur toute l’île","Régional","National","International"]}],
28
- presets: {},
29
- hidden: [],
30
- add: true,
31
- createLabel: "Ajouter une action",
32
- },
33
- },
34
- };
35
- export default mod;