@strapi/core 0.0.0-experimental.f9cac24ba3b2f6acb12d0fb5669106e5a134174e → 0.0.0-experimental.fa3ec797cdee7109d96b9f1616c32accf946e251

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 (719) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +427 -403
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +426 -402
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/compile.js +23 -14
  7. package/dist/compile.js.map +1 -1
  8. package/dist/compile.mjs +22 -14
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +110 -97
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +109 -96
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +31 -29
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs +30 -30
  17. package/dist/configuration/get-dirs.mjs.map +1 -1
  18. package/dist/configuration/index.d.ts +1 -0
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +85 -73
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +84 -69
  23. package/dist/configuration/index.mjs.map +1 -1
  24. package/dist/configuration/urls.d.ts.map +1 -1
  25. package/dist/configuration/urls.js +74 -61
  26. package/dist/configuration/urls.js.map +1 -1
  27. package/dist/configuration/urls.mjs +73 -62
  28. package/dist/configuration/urls.mjs.map +1 -1
  29. package/dist/container.js +27 -23
  30. package/dist/container.js.map +1 -1
  31. package/dist/container.mjs +26 -24
  32. package/dist/container.mjs.map +1 -1
  33. package/dist/core-api/controller/collection-type.js +77 -76
  34. package/dist/core-api/controller/collection-type.js.map +1 -1
  35. package/dist/core-api/controller/collection-type.mjs +76 -77
  36. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  37. package/dist/core-api/controller/index.js +63 -48
  38. package/dist/core-api/controller/index.js.map +1 -1
  39. package/dist/core-api/controller/index.mjs +62 -49
  40. package/dist/core-api/controller/index.mjs.map +1 -1
  41. package/dist/core-api/controller/single-type.js +41 -40
  42. package/dist/core-api/controller/single-type.js.map +1 -1
  43. package/dist/core-api/controller/single-type.mjs +40 -41
  44. package/dist/core-api/controller/single-type.mjs.map +1 -1
  45. package/dist/core-api/controller/transform.js +72 -63
  46. package/dist/core-api/controller/transform.js.map +1 -1
  47. package/dist/core-api/controller/transform.mjs +71 -64
  48. package/dist/core-api/controller/transform.mjs.map +1 -1
  49. package/dist/core-api/routes/index.js +64 -62
  50. package/dist/core-api/routes/index.js.map +1 -1
  51. package/dist/core-api/routes/index.mjs +62 -62
  52. package/dist/core-api/routes/index.mjs.map +1 -1
  53. package/dist/core-api/service/collection-type.js +73 -60
  54. package/dist/core-api/service/collection-type.js.map +1 -1
  55. package/dist/core-api/service/collection-type.mjs +72 -62
  56. package/dist/core-api/service/collection-type.mjs.map +1 -1
  57. package/dist/core-api/service/core-service.js +9 -8
  58. package/dist/core-api/service/core-service.js.map +1 -1
  59. package/dist/core-api/service/core-service.mjs +8 -9
  60. package/dist/core-api/service/core-service.mjs.map +1 -1
  61. package/dist/core-api/service/index.js +13 -13
  62. package/dist/core-api/service/index.js.map +1 -1
  63. package/dist/core-api/service/index.mjs +12 -14
  64. package/dist/core-api/service/index.mjs.map +1 -1
  65. package/dist/core-api/service/pagination.js +69 -43
  66. package/dist/core-api/service/pagination.js.map +1 -1
  67. package/dist/core-api/service/pagination.mjs +68 -47
  68. package/dist/core-api/service/pagination.mjs.map +1 -1
  69. package/dist/core-api/service/single-type.js +43 -39
  70. package/dist/core-api/service/single-type.js.map +1 -1
  71. package/dist/core-api/service/single-type.mjs +42 -41
  72. package/dist/core-api/service/single-type.mjs.map +1 -1
  73. package/dist/domain/content-type/index.js +95 -100
  74. package/dist/domain/content-type/index.js.map +1 -1
  75. package/dist/domain/content-type/index.mjs +94 -100
  76. package/dist/domain/content-type/index.mjs.map +1 -1
  77. package/dist/domain/content-type/validator.js +84 -69
  78. package/dist/domain/content-type/validator.js.map +1 -1
  79. package/dist/domain/content-type/validator.mjs +83 -68
  80. package/dist/domain/content-type/validator.mjs.map +1 -1
  81. package/dist/domain/module/index.js +109 -100
  82. package/dist/domain/module/index.js.map +1 -1
  83. package/dist/domain/module/index.mjs +108 -99
  84. package/dist/domain/module/index.mjs.map +1 -1
  85. package/dist/domain/module/validation.js +25 -20
  86. package/dist/domain/module/validation.js.map +1 -1
  87. package/dist/domain/module/validation.mjs +24 -21
  88. package/dist/domain/module/validation.mjs.map +1 -1
  89. package/dist/ee/index.d.ts +7 -0
  90. package/dist/ee/index.d.ts.map +1 -1
  91. package/dist/ee/index.js +197 -137
  92. package/dist/ee/index.js.map +1 -1
  93. package/dist/ee/index.mjs +196 -139
  94. package/dist/ee/index.mjs.map +1 -1
  95. package/dist/ee/license.d.ts +3 -1
  96. package/dist/ee/license.d.ts.map +1 -1
  97. package/dist/ee/license.js +105 -75
  98. package/dist/ee/license.js.map +1 -1
  99. package/dist/ee/license.mjs +103 -76
  100. package/dist/ee/license.mjs.map +1 -1
  101. package/dist/factories.js +72 -67
  102. package/dist/factories.js.map +1 -1
  103. package/dist/factories.mjs +71 -71
  104. package/dist/factories.mjs.map +1 -1
  105. package/dist/index.js +29 -26
  106. package/dist/index.js.map +1 -1
  107. package/dist/index.mjs +29 -29
  108. package/dist/index.mjs.map +1 -1
  109. package/dist/loaders/admin.d.ts.map +1 -1
  110. package/dist/loaders/admin.js +21 -20
  111. package/dist/loaders/admin.js.map +1 -1
  112. package/dist/loaders/admin.mjs +20 -20
  113. package/dist/loaders/admin.mjs.map +1 -1
  114. package/dist/loaders/apis.js +143 -120
  115. package/dist/loaders/apis.js.map +1 -1
  116. package/dist/loaders/apis.mjs +142 -119
  117. package/dist/loaders/apis.mjs.map +1 -1
  118. package/dist/loaders/components.js +33 -34
  119. package/dist/loaders/components.js.map +1 -1
  120. package/dist/loaders/components.mjs +32 -34
  121. package/dist/loaders/components.mjs.map +1 -1
  122. package/dist/loaders/index.js +22 -20
  123. package/dist/loaders/index.js.map +1 -1
  124. package/dist/loaders/index.mjs +21 -21
  125. package/dist/loaders/index.mjs.map +1 -1
  126. package/dist/loaders/middlewares.js +29 -25
  127. package/dist/loaders/middlewares.js.map +1 -1
  128. package/dist/loaders/middlewares.mjs +28 -25
  129. package/dist/loaders/middlewares.mjs.map +1 -1
  130. package/dist/loaders/plugins/get-enabled-plugins.js +126 -131
  131. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  132. package/dist/loaders/plugins/get-enabled-plugins.mjs +125 -108
  133. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  134. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  135. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  136. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  137. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  138. package/dist/loaders/plugins/index.js +132 -122
  139. package/dist/loaders/plugins/index.js.map +1 -1
  140. package/dist/loaders/plugins/index.mjs +121 -112
  141. package/dist/loaders/plugins/index.mjs.map +1 -1
  142. package/dist/loaders/policies.js +24 -20
  143. package/dist/loaders/policies.js.map +1 -1
  144. package/dist/loaders/policies.mjs +23 -20
  145. package/dist/loaders/policies.mjs.map +1 -1
  146. package/dist/loaders/sanitizers.js +10 -4
  147. package/dist/loaders/sanitizers.js.map +1 -1
  148. package/dist/loaders/sanitizers.mjs +9 -6
  149. package/dist/loaders/sanitizers.mjs.map +1 -1
  150. package/dist/loaders/src-index.js +35 -27
  151. package/dist/loaders/src-index.js.map +1 -1
  152. package/dist/loaders/src-index.mjs +34 -29
  153. package/dist/loaders/src-index.mjs.map +1 -1
  154. package/dist/loaders/validators.js +9 -4
  155. package/dist/loaders/validators.js.map +1 -1
  156. package/dist/loaders/validators.mjs +8 -6
  157. package/dist/loaders/validators.mjs.map +1 -1
  158. package/dist/middlewares/body.d.ts.map +1 -1
  159. package/dist/middlewares/body.js +58 -54
  160. package/dist/middlewares/body.js.map +1 -1
  161. package/dist/middlewares/body.mjs +57 -51
  162. package/dist/middlewares/body.mjs.map +1 -1
  163. package/dist/middlewares/compression.js +6 -6
  164. package/dist/middlewares/compression.js.map +1 -1
  165. package/dist/middlewares/compression.mjs +5 -5
  166. package/dist/middlewares/compression.mjs.map +1 -1
  167. package/dist/middlewares/cors.js +59 -48
  168. package/dist/middlewares/cors.js.map +1 -1
  169. package/dist/middlewares/cors.mjs +58 -47
  170. package/dist/middlewares/cors.mjs.map +1 -1
  171. package/dist/middlewares/errors.js +32 -30
  172. package/dist/middlewares/errors.js.map +1 -1
  173. package/dist/middlewares/errors.mjs +31 -31
  174. package/dist/middlewares/errors.mjs.map +1 -1
  175. package/dist/middlewares/favicon.js +27 -17
  176. package/dist/middlewares/favicon.js.map +1 -1
  177. package/dist/middlewares/favicon.mjs +26 -16
  178. package/dist/middlewares/favicon.mjs.map +1 -1
  179. package/dist/middlewares/index.js +32 -30
  180. package/dist/middlewares/index.js.map +1 -1
  181. package/dist/middlewares/index.mjs +31 -31
  182. package/dist/middlewares/index.mjs.map +1 -1
  183. package/dist/middlewares/ip.js +6 -6
  184. package/dist/middlewares/ip.js.map +1 -1
  185. package/dist/middlewares/ip.mjs +5 -5
  186. package/dist/middlewares/ip.mjs.map +1 -1
  187. package/dist/middlewares/logger.js +10 -9
  188. package/dist/middlewares/logger.js.map +1 -1
  189. package/dist/middlewares/logger.mjs +9 -10
  190. package/dist/middlewares/logger.mjs.map +1 -1
  191. package/dist/middlewares/powered-by.js +13 -9
  192. package/dist/middlewares/powered-by.js.map +1 -1
  193. package/dist/middlewares/powered-by.mjs +12 -10
  194. package/dist/middlewares/powered-by.mjs.map +1 -1
  195. package/dist/middlewares/public.js +33 -29
  196. package/dist/middlewares/public.js.map +1 -1
  197. package/dist/middlewares/public.mjs +32 -28
  198. package/dist/middlewares/public.mjs.map +1 -1
  199. package/dist/middlewares/query.js +35 -32
  200. package/dist/middlewares/query.js.map +1 -1
  201. package/dist/middlewares/query.mjs +34 -31
  202. package/dist/middlewares/query.mjs.map +1 -1
  203. package/dist/middlewares/response-time.js +10 -9
  204. package/dist/middlewares/response-time.js.map +1 -1
  205. package/dist/middlewares/response-time.mjs +9 -10
  206. package/dist/middlewares/response-time.mjs.map +1 -1
  207. package/dist/middlewares/responses.js +14 -12
  208. package/dist/middlewares/responses.js.map +1 -1
  209. package/dist/middlewares/responses.mjs +13 -13
  210. package/dist/middlewares/responses.mjs.map +1 -1
  211. package/dist/middlewares/security.js +109 -71
  212. package/dist/middlewares/security.js.map +1 -1
  213. package/dist/middlewares/security.mjs +108 -70
  214. package/dist/middlewares/security.mjs.map +1 -1
  215. package/dist/middlewares/session.js +26 -25
  216. package/dist/middlewares/session.js.map +1 -1
  217. package/dist/middlewares/session.mjs +25 -24
  218. package/dist/middlewares/session.mjs.map +1 -1
  219. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  220. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  221. package/dist/migrations/database/5.0.0-discard-drafts.js +154 -80
  222. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  223. package/dist/migrations/database/5.0.0-discard-drafts.mjs +153 -82
  224. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  225. package/dist/migrations/draft-publish.d.ts +1 -1
  226. package/dist/migrations/draft-publish.d.ts.map +1 -1
  227. package/dist/migrations/draft-publish.js +61 -34
  228. package/dist/migrations/draft-publish.js.map +1 -1
  229. package/dist/migrations/draft-publish.mjs +60 -36
  230. package/dist/migrations/draft-publish.mjs.map +1 -1
  231. package/dist/migrations/i18n.js +62 -45
  232. package/dist/migrations/i18n.js.map +1 -1
  233. package/dist/migrations/i18n.mjs +61 -47
  234. package/dist/migrations/i18n.mjs.map +1 -1
  235. package/dist/migrations/index.js +24 -10
  236. package/dist/migrations/index.js.map +1 -1
  237. package/dist/migrations/index.mjs +23 -12
  238. package/dist/migrations/index.mjs.map +1 -1
  239. package/dist/package.json.js +182 -0
  240. package/dist/package.json.js.map +1 -0
  241. package/dist/package.json.mjs +159 -0
  242. package/dist/package.json.mjs.map +1 -0
  243. package/dist/providers/admin.js +27 -17
  244. package/dist/providers/admin.js.map +1 -1
  245. package/dist/providers/admin.mjs +26 -19
  246. package/dist/providers/admin.mjs.map +1 -1
  247. package/dist/providers/coreStore.js +13 -8
  248. package/dist/providers/coreStore.js.map +1 -1
  249. package/dist/providers/coreStore.mjs +12 -10
  250. package/dist/providers/coreStore.mjs.map +1 -1
  251. package/dist/providers/cron.js +19 -16
  252. package/dist/providers/cron.js.map +1 -1
  253. package/dist/providers/cron.mjs +18 -18
  254. package/dist/providers/cron.mjs.map +1 -1
  255. package/dist/providers/index.js +18 -9
  256. package/dist/providers/index.js.map +1 -1
  257. package/dist/providers/index.mjs +17 -10
  258. package/dist/providers/index.mjs.map +1 -1
  259. package/dist/providers/provider.js +4 -3
  260. package/dist/providers/provider.js.map +1 -1
  261. package/dist/providers/provider.mjs +3 -4
  262. package/dist/providers/provider.mjs.map +1 -1
  263. package/dist/providers/registries.js +37 -32
  264. package/dist/providers/registries.js.map +1 -1
  265. package/dist/providers/registries.mjs +36 -34
  266. package/dist/providers/registries.mjs.map +1 -1
  267. package/dist/providers/telemetry.js +19 -16
  268. package/dist/providers/telemetry.js.map +1 -1
  269. package/dist/providers/telemetry.mjs +18 -18
  270. package/dist/providers/telemetry.mjs.map +1 -1
  271. package/dist/providers/webhooks.js +28 -26
  272. package/dist/providers/webhooks.js.map +1 -1
  273. package/dist/providers/webhooks.mjs +27 -28
  274. package/dist/providers/webhooks.mjs.map +1 -1
  275. package/dist/registries/apis.js +23 -20
  276. package/dist/registries/apis.js.map +1 -1
  277. package/dist/registries/apis.mjs +22 -22
  278. package/dist/registries/apis.mjs.map +1 -1
  279. package/dist/registries/components.js +35 -37
  280. package/dist/registries/components.js.map +1 -1
  281. package/dist/registries/components.mjs +34 -39
  282. package/dist/registries/components.mjs.map +1 -1
  283. package/dist/registries/content-types.js +54 -59
  284. package/dist/registries/content-types.js.map +1 -1
  285. package/dist/registries/content-types.mjs +53 -61
  286. package/dist/registries/content-types.mjs.map +1 -1
  287. package/dist/registries/controllers.js +70 -71
  288. package/dist/registries/controllers.js.map +1 -1
  289. package/dist/registries/controllers.mjs +69 -73
  290. package/dist/registries/controllers.mjs.map +1 -1
  291. package/dist/registries/custom-fields.js +75 -65
  292. package/dist/registries/custom-fields.js.map +1 -1
  293. package/dist/registries/custom-fields.mjs +74 -67
  294. package/dist/registries/custom-fields.mjs.map +1 -1
  295. package/dist/registries/hooks.js +46 -49
  296. package/dist/registries/hooks.js.map +1 -1
  297. package/dist/registries/hooks.mjs +45 -51
  298. package/dist/registries/hooks.mjs.map +1 -1
  299. package/dist/registries/middlewares.js +49 -51
  300. package/dist/registries/middlewares.js.map +1 -1
  301. package/dist/registries/middlewares.mjs +48 -53
  302. package/dist/registries/middlewares.mjs.map +1 -1
  303. package/dist/registries/models.js +14 -13
  304. package/dist/registries/models.js.map +1 -1
  305. package/dist/registries/models.mjs +13 -14
  306. package/dist/registries/models.mjs.map +1 -1
  307. package/dist/registries/modules.js +39 -36
  308. package/dist/registries/modules.js.map +1 -1
  309. package/dist/registries/modules.mjs +38 -38
  310. package/dist/registries/modules.mjs.map +1 -1
  311. package/dist/registries/namespace.js +21 -20
  312. package/dist/registries/namespace.js.map +1 -1
  313. package/dist/registries/namespace.mjs +20 -23
  314. package/dist/registries/namespace.mjs.map +1 -1
  315. package/dist/registries/plugins.js +23 -20
  316. package/dist/registries/plugins.js.map +1 -1
  317. package/dist/registries/plugins.mjs +22 -22
  318. package/dist/registries/plugins.mjs.map +1 -1
  319. package/dist/registries/policies.js +103 -96
  320. package/dist/registries/policies.js.map +1 -1
  321. package/dist/registries/policies.mjs +102 -98
  322. package/dist/registries/policies.mjs.map +1 -1
  323. package/dist/registries/sanitizers.js +23 -22
  324. package/dist/registries/sanitizers.js.map +1 -1
  325. package/dist/registries/sanitizers.mjs +22 -22
  326. package/dist/registries/sanitizers.mjs.map +1 -1
  327. package/dist/registries/services.js +71 -71
  328. package/dist/registries/services.js.map +1 -1
  329. package/dist/registries/services.mjs +70 -73
  330. package/dist/registries/services.mjs.map +1 -1
  331. package/dist/registries/validators.js +23 -22
  332. package/dist/registries/validators.js.map +1 -1
  333. package/dist/registries/validators.mjs +22 -22
  334. package/dist/registries/validators.mjs.map +1 -1
  335. package/dist/services/auth/index.js +74 -74
  336. package/dist/services/auth/index.js.map +1 -1
  337. package/dist/services/auth/index.mjs +73 -74
  338. package/dist/services/auth/index.mjs.map +1 -1
  339. package/dist/services/config.js +47 -43
  340. package/dist/services/config.js.map +1 -1
  341. package/dist/services/config.mjs +46 -44
  342. package/dist/services/config.mjs.map +1 -1
  343. package/dist/services/content-api/index.js +80 -79
  344. package/dist/services/content-api/index.js.map +1 -1
  345. package/dist/services/content-api/index.mjs +79 -79
  346. package/dist/services/content-api/index.mjs.map +1 -1
  347. package/dist/services/content-api/permissions/engine.js +8 -5
  348. package/dist/services/content-api/permissions/engine.js.map +1 -1
  349. package/dist/services/content-api/permissions/engine.mjs +7 -5
  350. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  351. package/dist/services/content-api/permissions/index.js +101 -81
  352. package/dist/services/content-api/permissions/index.js.map +1 -1
  353. package/dist/services/content-api/permissions/index.mjs +100 -81
  354. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  355. package/dist/services/content-api/permissions/providers/action.js +17 -14
  356. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  357. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  358. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  359. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  360. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  361. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  362. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  363. package/dist/services/core-store.d.ts +2 -2
  364. package/dist/services/core-store.d.ts.map +1 -1
  365. package/dist/services/core-store.js +115 -95
  366. package/dist/services/core-store.js.map +1 -1
  367. package/dist/services/core-store.mjs +114 -97
  368. package/dist/services/core-store.mjs.map +1 -1
  369. package/dist/services/cron.js +74 -60
  370. package/dist/services/cron.js.map +1 -1
  371. package/dist/services/cron.mjs +73 -62
  372. package/dist/services/cron.mjs.map +1 -1
  373. package/dist/services/custom-fields.js +9 -7
  374. package/dist/services/custom-fields.js.map +1 -1
  375. package/dist/services/custom-fields.mjs +8 -9
  376. package/dist/services/custom-fields.mjs.map +1 -1
  377. package/dist/services/document-service/attributes/index.js +23 -18
  378. package/dist/services/document-service/attributes/index.js.map +1 -1
  379. package/dist/services/document-service/attributes/index.mjs +22 -19
  380. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  381. package/dist/services/document-service/attributes/transforms.js +16 -15
  382. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  383. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  384. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  385. package/dist/services/document-service/common.d.ts +1 -1
  386. package/dist/services/document-service/common.d.ts.map +1 -1
  387. package/dist/services/document-service/common.js +5 -4
  388. package/dist/services/document-service/common.js.map +1 -1
  389. package/dist/services/document-service/common.mjs +4 -5
  390. package/dist/services/document-service/common.mjs.map +1 -1
  391. package/dist/services/document-service/components.d.ts.map +1 -1
  392. package/dist/services/document-service/components.js +255 -257
  393. package/dist/services/document-service/components.js.map +1 -1
  394. package/dist/services/document-service/components.mjs +254 -262
  395. package/dist/services/document-service/components.mjs.map +1 -1
  396. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  397. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  398. package/dist/services/document-service/draft-and-publish.js +88 -48
  399. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  400. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  401. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  402. package/dist/services/document-service/entries.d.ts +2 -2
  403. package/dist/services/document-service/entries.d.ts.map +1 -1
  404. package/dist/services/document-service/entries.js +151 -92
  405. package/dist/services/document-service/entries.js.map +1 -1
  406. package/dist/services/document-service/entries.mjs +150 -93
  407. package/dist/services/document-service/entries.mjs.map +1 -1
  408. package/dist/services/document-service/events.d.ts +1 -1
  409. package/dist/services/document-service/events.d.ts.map +1 -1
  410. package/dist/services/document-service/events.js +52 -40
  411. package/dist/services/document-service/events.js.map +1 -1
  412. package/dist/services/document-service/events.mjs +51 -41
  413. package/dist/services/document-service/events.mjs.map +1 -1
  414. package/dist/services/document-service/index.d.ts +2 -1
  415. package/dist/services/document-service/index.d.ts.map +1 -1
  416. package/dist/services/document-service/index.js +53 -32
  417. package/dist/services/document-service/index.js.map +1 -1
  418. package/dist/services/document-service/index.mjs +52 -33
  419. package/dist/services/document-service/index.mjs.map +1 -1
  420. package/dist/services/document-service/internationalization.js +62 -46
  421. package/dist/services/document-service/internationalization.js.map +1 -1
  422. package/dist/services/document-service/internationalization.mjs +61 -50
  423. package/dist/services/document-service/internationalization.mjs.map +1 -1
  424. package/dist/services/document-service/middlewares/errors.js +23 -19
  425. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  426. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  427. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  428. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  429. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  430. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  431. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  432. package/dist/services/document-service/params.js +11 -5
  433. package/dist/services/document-service/params.js.map +1 -1
  434. package/dist/services/document-service/params.mjs +10 -6
  435. package/dist/services/document-service/params.mjs.map +1 -1
  436. package/dist/services/document-service/repository.d.ts.map +1 -1
  437. package/dist/services/document-service/repository.js +354 -304
  438. package/dist/services/document-service/repository.js.map +1 -1
  439. package/dist/services/document-service/repository.mjs +353 -305
  440. package/dist/services/document-service/repository.mjs.map +1 -1
  441. package/dist/services/document-service/transform/data.js +22 -12
  442. package/dist/services/document-service/transform/data.js.map +1 -1
  443. package/dist/services/document-service/transform/data.mjs +21 -13
  444. package/dist/services/document-service/transform/data.mjs.map +1 -1
  445. package/dist/services/document-service/transform/fields.js +26 -17
  446. package/dist/services/document-service/transform/fields.js.map +1 -1
  447. package/dist/services/document-service/transform/fields.mjs +25 -18
  448. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  449. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  450. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  451. package/dist/services/document-service/transform/id-map.js +116 -69
  452. package/dist/services/document-service/transform/id-map.js.map +1 -1
  453. package/dist/services/document-service/transform/id-map.mjs +115 -70
  454. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  455. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  456. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  457. package/dist/services/document-service/transform/id-transform.js +37 -29
  458. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  459. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  460. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  461. package/dist/services/document-service/transform/populate.js +23 -18
  462. package/dist/services/document-service/transform/populate.js.map +1 -1
  463. package/dist/services/document-service/transform/populate.mjs +22 -19
  464. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  465. package/dist/services/document-service/transform/query.js +11 -6
  466. package/dist/services/document-service/transform/query.js.map +1 -1
  467. package/dist/services/document-service/transform/query.mjs +10 -7
  468. package/dist/services/document-service/transform/query.mjs.map +1 -1
  469. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  470. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  471. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  472. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  473. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  474. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  475. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  476. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  477. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  478. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  479. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  480. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  481. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  482. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  483. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  484. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  485. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  486. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  487. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  488. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  489. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  490. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  491. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  492. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  493. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  494. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  495. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  496. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  497. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -77
  498. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  499. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  500. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  501. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  502. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  503. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  504. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  505. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  506. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  507. package/dist/services/document-service/utils/populate.d.ts +1 -1
  508. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  509. package/dist/services/document-service/utils/populate.js +66 -42
  510. package/dist/services/document-service/utils/populate.js.map +1 -1
  511. package/dist/services/document-service/utils/populate.mjs +65 -43
  512. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  513. package/dist/services/document-service/utils/unidirectional-relations.d.ts +12 -9
  514. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  515. package/dist/services/document-service/utils/unidirectional-relations.js +110 -51
  516. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  517. package/dist/services/document-service/utils/unidirectional-relations.mjs +109 -53
  518. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  519. package/dist/services/entity-service/index.js +230 -161
  520. package/dist/services/entity-service/index.js.map +1 -1
  521. package/dist/services/entity-service/index.mjs +229 -160
  522. package/dist/services/entity-service/index.mjs.map +1 -1
  523. package/dist/services/entity-validator/blocks-validator.js +135 -103
  524. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  525. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  526. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  527. package/dist/services/entity-validator/index.d.ts +1 -1
  528. package/dist/services/entity-validator/index.d.ts.map +1 -1
  529. package/dist/services/entity-validator/index.js +362 -367
  530. package/dist/services/entity-validator/index.js.map +1 -1
  531. package/dist/services/entity-validator/index.mjs +358 -364
  532. package/dist/services/entity-validator/index.mjs.map +1 -1
  533. package/dist/services/entity-validator/validators.js +268 -210
  534. package/dist/services/entity-validator/validators.js.map +1 -1
  535. package/dist/services/entity-validator/validators.mjs +267 -216
  536. package/dist/services/entity-validator/validators.mjs.map +1 -1
  537. package/dist/services/errors.js +65 -65
  538. package/dist/services/errors.js.map +1 -1
  539. package/dist/services/errors.mjs +64 -66
  540. package/dist/services/errors.mjs.map +1 -1
  541. package/dist/services/event-hub.js +82 -69
  542. package/dist/services/event-hub.js.map +1 -1
  543. package/dist/services/event-hub.mjs +81 -71
  544. package/dist/services/event-hub.mjs.map +1 -1
  545. package/dist/services/features.js +19 -14
  546. package/dist/services/features.js.map +1 -1
  547. package/dist/services/features.mjs +18 -15
  548. package/dist/services/features.mjs.map +1 -1
  549. package/dist/services/fs.js +41 -40
  550. package/dist/services/fs.js.map +1 -1
  551. package/dist/services/fs.mjs +40 -39
  552. package/dist/services/fs.mjs.map +1 -1
  553. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  554. package/dist/services/metrics/admin-user-hash.js +13 -11
  555. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  556. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  557. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  558. package/dist/services/metrics/index.js +46 -40
  559. package/dist/services/metrics/index.js.map +1 -1
  560. package/dist/services/metrics/index.mjs +45 -42
  561. package/dist/services/metrics/index.mjs.map +1 -1
  562. package/dist/services/metrics/is-truthy.js +13 -6
  563. package/dist/services/metrics/is-truthy.js.map +1 -1
  564. package/dist/services/metrics/is-truthy.mjs +12 -6
  565. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  566. package/dist/services/metrics/middleware.d.ts.map +1 -1
  567. package/dist/services/metrics/middleware.js +37 -22
  568. package/dist/services/metrics/middleware.js.map +1 -1
  569. package/dist/services/metrics/middleware.mjs +36 -24
  570. package/dist/services/metrics/middleware.mjs.map +1 -1
  571. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  572. package/dist/services/metrics/rate-limiter.js +24 -19
  573. package/dist/services/metrics/rate-limiter.js.map +1 -1
  574. package/dist/services/metrics/rate-limiter.mjs +23 -21
  575. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  576. package/dist/services/metrics/sender.d.ts.map +1 -1
  577. package/dist/services/metrics/sender.js +78 -69
  578. package/dist/services/metrics/sender.js.map +1 -1
  579. package/dist/services/metrics/sender.mjs +77 -64
  580. package/dist/services/metrics/sender.mjs.map +1 -1
  581. package/dist/services/query-params.js +13 -10
  582. package/dist/services/query-params.js.map +1 -1
  583. package/dist/services/query-params.mjs +12 -12
  584. package/dist/services/query-params.mjs.map +1 -1
  585. package/dist/services/reloader.js +35 -32
  586. package/dist/services/reloader.js.map +1 -1
  587. package/dist/services/reloader.mjs +34 -33
  588. package/dist/services/reloader.mjs.map +1 -1
  589. package/dist/services/request-context.js +11 -8
  590. package/dist/services/request-context.js.map +1 -1
  591. package/dist/services/request-context.mjs +10 -10
  592. package/dist/services/request-context.mjs.map +1 -1
  593. package/dist/services/server/admin-api.js +11 -10
  594. package/dist/services/server/admin-api.js.map +1 -1
  595. package/dist/services/server/admin-api.mjs +10 -11
  596. package/dist/services/server/admin-api.mjs.map +1 -1
  597. package/dist/services/server/api.js +33 -27
  598. package/dist/services/server/api.js.map +1 -1
  599. package/dist/services/server/api.mjs +32 -26
  600. package/dist/services/server/api.mjs.map +1 -1
  601. package/dist/services/server/compose-endpoint.js +116 -105
  602. package/dist/services/server/compose-endpoint.js.map +1 -1
  603. package/dist/services/server/compose-endpoint.mjs +115 -105
  604. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  605. package/dist/services/server/content-api.js +11 -9
  606. package/dist/services/server/content-api.js.map +1 -1
  607. package/dist/services/server/content-api.mjs +10 -10
  608. package/dist/services/server/content-api.mjs.map +1 -1
  609. package/dist/services/server/http-server.js +48 -44
  610. package/dist/services/server/http-server.js.map +1 -1
  611. package/dist/services/server/http-server.mjs +47 -43
  612. package/dist/services/server/http-server.mjs.map +1 -1
  613. package/dist/services/server/index.js +85 -82
  614. package/dist/services/server/index.js.map +1 -1
  615. package/dist/services/server/index.mjs +84 -81
  616. package/dist/services/server/index.mjs.map +1 -1
  617. package/dist/services/server/koa.js +49 -47
  618. package/dist/services/server/koa.js.map +1 -1
  619. package/dist/services/server/koa.mjs +48 -44
  620. package/dist/services/server/koa.mjs.map +1 -1
  621. package/dist/services/server/middleware.js +86 -82
  622. package/dist/services/server/middleware.js.map +1 -1
  623. package/dist/services/server/middleware.mjs +85 -82
  624. package/dist/services/server/middleware.mjs.map +1 -1
  625. package/dist/services/server/policy.js +24 -17
  626. package/dist/services/server/policy.js.map +1 -1
  627. package/dist/services/server/policy.mjs +23 -18
  628. package/dist/services/server/policy.mjs.map +1 -1
  629. package/dist/services/server/register-middlewares.js +68 -61
  630. package/dist/services/server/register-middlewares.js.map +1 -1
  631. package/dist/services/server/register-middlewares.mjs +67 -63
  632. package/dist/services/server/register-middlewares.mjs.map +1 -1
  633. package/dist/services/server/register-routes.js +90 -67
  634. package/dist/services/server/register-routes.js.map +1 -1
  635. package/dist/services/server/register-routes.mjs +89 -67
  636. package/dist/services/server/register-routes.mjs.map +1 -1
  637. package/dist/services/server/routing.js +94 -81
  638. package/dist/services/server/routing.js.map +1 -1
  639. package/dist/services/server/routing.mjs +93 -81
  640. package/dist/services/server/routing.mjs.map +1 -1
  641. package/dist/services/utils/dynamic-zones.js +13 -14
  642. package/dist/services/utils/dynamic-zones.js.map +1 -1
  643. package/dist/services/utils/dynamic-zones.mjs +12 -16
  644. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  645. package/dist/services/webhook-runner.js +124 -122
  646. package/dist/services/webhook-runner.js.map +1 -1
  647. package/dist/services/webhook-runner.mjs +123 -121
  648. package/dist/services/webhook-runner.mjs.map +1 -1
  649. package/dist/services/webhook-store.js +132 -99
  650. package/dist/services/webhook-store.js.map +1 -1
  651. package/dist/services/webhook-store.mjs +131 -101
  652. package/dist/services/webhook-store.mjs.map +1 -1
  653. package/dist/services/worker-queue.js +44 -49
  654. package/dist/services/worker-queue.js.map +1 -1
  655. package/dist/services/worker-queue.mjs +43 -49
  656. package/dist/services/worker-queue.mjs.map +1 -1
  657. package/dist/utils/convert-custom-field-type.js +17 -20
  658. package/dist/utils/convert-custom-field-type.js.map +1 -1
  659. package/dist/utils/convert-custom-field-type.mjs +16 -21
  660. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  661. package/dist/utils/cron.js +64 -30
  662. package/dist/utils/cron.js.map +1 -1
  663. package/dist/utils/cron.mjs +63 -31
  664. package/dist/utils/cron.mjs.map +1 -1
  665. package/dist/utils/fetch.d.ts +5 -1
  666. package/dist/utils/fetch.d.ts.map +1 -1
  667. package/dist/utils/fetch.js +28 -18
  668. package/dist/utils/fetch.js.map +1 -1
  669. package/dist/utils/fetch.mjs +27 -19
  670. package/dist/utils/fetch.mjs.map +1 -1
  671. package/dist/utils/filepath-to-prop-path.js +20 -28
  672. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  673. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  674. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  675. package/dist/utils/is-initialized.js +21 -12
  676. package/dist/utils/is-initialized.js.map +1 -1
  677. package/dist/utils/is-initialized.mjs +20 -13
  678. package/dist/utils/is-initialized.mjs.map +1 -1
  679. package/dist/utils/lifecycles.js +6 -5
  680. package/dist/utils/lifecycles.js.map +1 -1
  681. package/dist/utils/lifecycles.mjs +5 -6
  682. package/dist/utils/lifecycles.mjs.map +1 -1
  683. package/dist/utils/load-config-file.js +40 -38
  684. package/dist/utils/load-config-file.js.map +1 -1
  685. package/dist/utils/load-config-file.mjs +39 -36
  686. package/dist/utils/load-config-file.mjs.map +1 -1
  687. package/dist/utils/load-files.js +40 -35
  688. package/dist/utils/load-files.js.map +1 -1
  689. package/dist/utils/load-files.mjs +39 -32
  690. package/dist/utils/load-files.mjs.map +1 -1
  691. package/dist/utils/open-browser.js +8 -8
  692. package/dist/utils/open-browser.js.map +1 -1
  693. package/dist/utils/open-browser.mjs +7 -7
  694. package/dist/utils/open-browser.mjs.map +1 -1
  695. package/dist/utils/resolve-working-dirs.js +23 -10
  696. package/dist/utils/resolve-working-dirs.js.map +1 -1
  697. package/dist/utils/resolve-working-dirs.mjs +22 -9
  698. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  699. package/dist/utils/signals.js +20 -14
  700. package/dist/utils/signals.js.map +1 -1
  701. package/dist/utils/signals.mjs +19 -15
  702. package/dist/utils/signals.mjs.map +1 -1
  703. package/dist/utils/startup-logger.d.ts.map +1 -1
  704. package/dist/utils/startup-logger.js +107 -78
  705. package/dist/utils/startup-logger.js.map +1 -1
  706. package/dist/utils/startup-logger.mjs +106 -75
  707. package/dist/utils/startup-logger.mjs.map +1 -1
  708. package/dist/utils/transform-content-types-to-models.d.ts +353 -21
  709. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  710. package/dist/utils/transform-content-types-to-models.js +350 -261
  711. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  712. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  713. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  714. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  715. package/dist/utils/update-notifier/index.js +68 -73
  716. package/dist/utils/update-notifier/index.js.map +1 -1
  717. package/dist/utils/update-notifier/index.mjs +67 -67
  718. package/dist/utils/update-notifier/index.mjs.map +1 -1
  719. package/package.json +26 -27
@@ -1 +1 @@
1
- {"version":3,"file":"dp.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { contentTypes } from '@strapi/utils';\nimport { UID } from '@strapi/types';\n\nimport { LongHandDocument } from './types';\n\ntype Status = 'draft' | 'published';\n\nexport const getRelationTargetStatus = (\n relation: Pick<LongHandDocument, 'documentId' | 'status'>,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceStatus?: Status;\n }\n): Status[] => {\n // Ignore if the target content type does not have draft and publish enabled\n const targetContentType = strapi.getModel(opts.targetUid);\n const sourceContentType = strapi.getModel(opts.sourceUid);\n\n const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);\n const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);\n\n if (!targetHasDP) {\n return ['published'];\n }\n\n /**\n * If both source and target have DP enabled,\n * connect it to the same status as the source status\n */\n if (sourceHasDP && !isNil(opts.sourceStatus)) {\n return [opts.sourceStatus];\n }\n\n /**\n * Use the status from the relation if it's set\n */\n if (relation.status) {\n switch (relation.status) {\n case 'published':\n return ['published'];\n default:\n // Default to draft if it's an invalid status (e.g. modified)\n return ['draft'];\n }\n }\n\n /**\n * If DP is disabled and relation does not specify any status\n * Connect to both draft and published versions\n */\n if (!sourceHasDP) {\n return ['draft', 'published'];\n }\n\n // Default to draft as a fallback\n return ['draft'];\n};\n"],"names":[],"mappings":";;AASa,MAAA,0BAA0B,CACrC,UACA,SAKa;AAEb,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AACxD,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AAElD,QAAA,cAAc,aAAa,mBAAmB,iBAAiB;AAC/D,QAAA,cAAc,aAAa,mBAAmB,iBAAiB;AAErE,MAAI,CAAC,aAAa;AAChB,WAAO,CAAC,WAAW;AAAA,EACrB;AAMA,MAAI,eAAe,CAAC,MAAM,KAAK,YAAY,GAAG;AACrC,WAAA,CAAC,KAAK,YAAY;AAAA,EAC3B;AAKA,MAAI,SAAS,QAAQ;AACnB,YAAQ,SAAS,QAAQ;AAAA,MACvB,KAAK;AACH,eAAO,CAAC,WAAW;AAAA,MACrB;AAEE,eAAO,CAAC,OAAO;AAAA,IACnB;AAAA,EACF;AAMA,MAAI,CAAC,aAAa;AACT,WAAA,CAAC,SAAS,WAAW;AAAA,EAC9B;AAGA,SAAO,CAAC,OAAO;AACjB;"}
1
+ {"version":3,"file":"dp.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { contentTypes } from '@strapi/utils';\nimport type { UID } from '@strapi/types';\n\nimport { LongHandDocument } from './types';\n\ntype Status = 'draft' | 'published';\n\nexport const getRelationTargetStatus = (\n relation: Pick<LongHandDocument, 'documentId' | 'status'>,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceStatus?: Status;\n }\n): Status[] => {\n // Ignore if the target content type does not have draft and publish enabled\n const targetContentType = strapi.getModel(opts.targetUid);\n const sourceContentType = strapi.getModel(opts.sourceUid);\n\n const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);\n const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);\n\n if (!targetHasDP) {\n return ['published'];\n }\n\n /**\n * If both source and target have DP enabled,\n * connect it to the same status as the source status\n */\n if (sourceHasDP && !isNil(opts.sourceStatus)) {\n return [opts.sourceStatus];\n }\n\n /**\n * Use the status from the relation if it's set\n */\n if (relation.status) {\n switch (relation.status) {\n case 'published':\n return ['published'];\n default:\n // Default to draft if it's an invalid status (e.g. modified)\n return ['draft'];\n }\n }\n\n /**\n * If DP is disabled and relation does not specify any status\n * Connect to both draft and published versions\n */\n if (!sourceHasDP) {\n return ['draft', 'published'];\n }\n\n // Default to draft as a fallback\n return ['draft'];\n};\n"],"names":["getRelationTargetStatus","relation","opts","targetContentType","strapi","getModel","targetUid","sourceContentType","sourceUid","targetHasDP","contentTypes","hasDraftAndPublish","sourceHasDP","isNil","sourceStatus","status"],"mappings":";;;AASO,MAAMA,uBAA0B,GAAA,CACrCC,QACAC,EAAAA,IAAAA,GAAAA;;AAOA,IAAA,MAAMC,iBAAoBC,GAAAA,MAAAA,CAAOC,QAAQ,CAACH,KAAKI,SAAS,CAAA;AACxD,IAAA,MAAMC,iBAAoBH,GAAAA,MAAAA,CAAOC,QAAQ,CAACH,KAAKM,SAAS,CAAA;IAExD,MAAMC,WAAAA,GAAcC,YAAaC,CAAAA,kBAAkB,CAACR,iBAAAA,CAAAA;IACpD,MAAMS,WAAAA,GAAcF,YAAaC,CAAAA,kBAAkB,CAACJ,iBAAAA,CAAAA;AAEpD,IAAA,IAAI,CAACE,WAAa,EAAA;QAChB,OAAO;AAAC,YAAA;AAAY,SAAA;AACtB;AAEA;;;AAGC,MACD,IAAIG,WAAe,IAAA,CAACC,KAAMX,CAAAA,IAAAA,CAAKY,YAAY,CAAG,EAAA;QAC5C,OAAO;AAACZ,YAAAA,IAAAA,CAAKY;AAAa,SAAA;AAC5B;AAEA;;MAGA,IAAIb,QAASc,CAAAA,MAAM,EAAE;AACnB,QAAA,OAAQd,SAASc,MAAM;YACrB,KAAK,WAAA;gBACH,OAAO;AAAC,oBAAA;AAAY,iBAAA;AACtB,YAAA;;gBAEE,OAAO;AAAC,oBAAA;AAAQ,iBAAA;AACpB;AACF;AAEA;;;MAIA,IAAI,CAACH,WAAa,EAAA;QAChB,OAAO;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY,SAAA;AAC/B;;IAGA,OAAO;AAAC,QAAA;AAAQ,KAAA;AAClB;;;;"}
@@ -1,4 +1,4 @@
1
- import { UID } from '@strapi/types';
1
+ import type { UID } from '@strapi/types';
2
2
  import { LongHandDocument } from './types';
3
3
  export declare const isLocalizedContentType: (uid: UID.Schema) => any;
4
4
  export declare const getDefaultLocale: () => any;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACpC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,sBAAsB,QAAS,IAAI,MAAM,QAGrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAE5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,aACxB,gBAAgB,QACpB;IACJ,SAAS,EAAE,IAAI,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,8BAiBF,CAAC"}
1
+ {"version":3,"file":"i18n.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AACzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,eAAO,MAAM,sBAAsB,QAAS,IAAI,MAAM,QAGrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAE5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,aACxB,gBAAgB,QACpB;IACJ,SAAS,EAAE,IAAI,MAAM,CAAC;IACtB,SAAS,EAAE,IAAI,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,8BAiBF,CAAC"}
@@ -1,24 +1,26 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const isLocalizedContentType = (uid) => {
4
- const model = strapi.getModel(uid);
5
- return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
1
+ 'use strict';
2
+
3
+ const isLocalizedContentType = (uid)=>{
4
+ const model = strapi.getModel(uid);
5
+ return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);
6
6
  };
7
- const getDefaultLocale = () => {
8
- return strapi.plugin("i18n").service("locales").getDefaultLocale();
7
+ const getDefaultLocale = ()=>{
8
+ return strapi.plugin('i18n').service('locales').getDefaultLocale();
9
9
  };
10
- const getRelationTargetLocale = (relation, opts) => {
11
- const targetLocale = relation.locale || opts.sourceLocale;
12
- const isTargetLocalized = isLocalizedContentType(opts.targetUid);
13
- const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
14
- if (isSourceLocalized && isTargetLocalized) {
15
- return opts.sourceLocale;
16
- }
17
- if (isTargetLocalized) {
18
- return targetLocale;
19
- }
20
- return null;
10
+ const getRelationTargetLocale = (relation, opts)=>{
11
+ const targetLocale = relation.locale || opts.sourceLocale;
12
+ const isTargetLocalized = isLocalizedContentType(opts.targetUid);
13
+ const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
14
+ // Both source and target locales should match
15
+ if (isSourceLocalized && isTargetLocalized) {
16
+ return opts.sourceLocale;
17
+ }
18
+ if (isTargetLocalized) {
19
+ return targetLocale;
20
+ }
21
+ return null;
21
22
  };
23
+
22
24
  exports.getDefaultLocale = getDefaultLocale;
23
25
  exports.getRelationTargetLocale = getRelationTargetLocale;
24
26
  exports.isLocalizedContentType = isLocalizedContentType;
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { UID } from '@strapi/types';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const targetLocale = relation.locale || opts.sourceLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Both source and target locales should match\n if (isSourceLocalized && isTargetLocalized) {\n return opts.sourceLocale;\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":[],"mappings":";;AAGa,MAAA,yBAAyB,CAAC,QAAoB;AACnD,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AACpC,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACG,QAAA,eAAe,SAAS,UAAU,KAAK;AAEvC,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAC1C,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;;;;"}
1
+ {"version":3,"file":"i18n.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const targetLocale = relation.locale || opts.sourceLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Both source and target locales should match\n if (isSourceLocalized && isTargetLocalized) {\n return opts.sourceLocale;\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":["isLocalizedContentType","uid","model","strapi","getModel","plugin","service","getDefaultLocale","getRelationTargetLocale","relation","opts","targetLocale","locale","sourceLocale","isTargetLocalized","targetUid","isSourceLocalized","sourceUid"],"mappings":";;AAGO,MAAMA,yBAAyB,CAACC,GAAAA,GAAAA;IACrC,MAAMC,KAAAA,GAAQC,MAAOC,CAAAA,QAAQ,CAACH,GAAAA,CAAAA;IAC9B,OAAOE,MAAAA,CAAOE,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAAC,eAAA,CAAA,CAAiBN,sBAAsB,CAACE,KAAAA,CAAAA;AAC/E;MAEaK,gBAAmB,GAAA,IAAA;AAC9B,IAAA,OAAOJ,OAAOE,MAAM,CAAC,QAAQC,OAAO,CAAC,WAAWC,gBAAgB,EAAA;AAClE;AAEO,MAAMC,uBAA0B,GAAA,CACrCC,QACAC,EAAAA,IAAAA,GAAAA;AAMA,IAAA,MAAMC,YAAeF,GAAAA,QAAAA,CAASG,MAAM,IAAIF,KAAKG,YAAY;IAEzD,MAAMC,iBAAAA,GAAoBd,sBAAuBU,CAAAA,IAAAA,CAAKK,SAAS,CAAA;IAC/D,MAAMC,iBAAAA,GAAoBhB,sBAAuBU,CAAAA,IAAAA,CAAKO,SAAS,CAAA;;AAG/D,IAAA,IAAID,qBAAqBF,iBAAmB,EAAA;AAC1C,QAAA,OAAOJ,KAAKG,YAAY;AAC1B;AAEA,IAAA,IAAIC,iBAAmB,EAAA;QACrB,OAAOH,YAAAA;AACT;IAEA,OAAO,IAAA;AACT;;;;;;"}
@@ -1,25 +1,23 @@
1
- const isLocalizedContentType = (uid) => {
2
- const model = strapi.getModel(uid);
3
- return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
1
+ const isLocalizedContentType = (uid)=>{
2
+ const model = strapi.getModel(uid);
3
+ return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);
4
4
  };
5
- const getDefaultLocale = () => {
6
- return strapi.plugin("i18n").service("locales").getDefaultLocale();
5
+ const getDefaultLocale = ()=>{
6
+ return strapi.plugin('i18n').service('locales').getDefaultLocale();
7
7
  };
8
- const getRelationTargetLocale = (relation, opts) => {
9
- const targetLocale = relation.locale || opts.sourceLocale;
10
- const isTargetLocalized = isLocalizedContentType(opts.targetUid);
11
- const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
12
- if (isSourceLocalized && isTargetLocalized) {
13
- return opts.sourceLocale;
14
- }
15
- if (isTargetLocalized) {
16
- return targetLocale;
17
- }
18
- return null;
19
- };
20
- export {
21
- getDefaultLocale,
22
- getRelationTargetLocale,
23
- isLocalizedContentType
8
+ const getRelationTargetLocale = (relation, opts)=>{
9
+ const targetLocale = relation.locale || opts.sourceLocale;
10
+ const isTargetLocalized = isLocalizedContentType(opts.targetUid);
11
+ const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
12
+ // Both source and target locales should match
13
+ if (isSourceLocalized && isTargetLocalized) {
14
+ return opts.sourceLocale;
15
+ }
16
+ if (isTargetLocalized) {
17
+ return targetLocale;
18
+ }
19
+ return null;
24
20
  };
21
+
22
+ export { getDefaultLocale, getRelationTargetLocale, isLocalizedContentType };
25
23
  //# sourceMappingURL=i18n.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"i18n.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { UID } from '@strapi/types';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const targetLocale = relation.locale || opts.sourceLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Both source and target locales should match\n if (isSourceLocalized && isTargetLocalized) {\n return opts.sourceLocale;\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":[],"mappings":"AAGa,MAAA,yBAAyB,CAAC,QAAoB;AACnD,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AACpC,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACG,QAAA,eAAe,SAAS,UAAU,KAAK;AAEvC,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAC1C,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;"}
1
+ {"version":3,"file":"i18n.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const targetLocale = relation.locale || opts.sourceLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Both source and target locales should match\n if (isSourceLocalized && isTargetLocalized) {\n return opts.sourceLocale;\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":["isLocalizedContentType","uid","model","strapi","getModel","plugin","service","getDefaultLocale","getRelationTargetLocale","relation","opts","targetLocale","locale","sourceLocale","isTargetLocalized","targetUid","isSourceLocalized","sourceUid"],"mappings":"AAGO,MAAMA,yBAAyB,CAACC,GAAAA,GAAAA;IACrC,MAAMC,KAAAA,GAAQC,MAAOC,CAAAA,QAAQ,CAACH,GAAAA,CAAAA;IAC9B,OAAOE,MAAAA,CAAOE,MAAM,CAAC,MAAA,CAAA,CAAQC,OAAO,CAAC,eAAA,CAAA,CAAiBN,sBAAsB,CAACE,KAAAA,CAAAA;AAC/E;MAEaK,gBAAmB,GAAA,IAAA;AAC9B,IAAA,OAAOJ,OAAOE,MAAM,CAAC,QAAQC,OAAO,CAAC,WAAWC,gBAAgB,EAAA;AAClE;AAEO,MAAMC,uBAA0B,GAAA,CACrCC,QACAC,EAAAA,IAAAA,GAAAA;AAMA,IAAA,MAAMC,YAAeF,GAAAA,QAAAA,CAASG,MAAM,IAAIF,KAAKG,YAAY;IAEzD,MAAMC,iBAAAA,GAAoBd,sBAAuBU,CAAAA,IAAAA,CAAKK,SAAS,CAAA;IAC/D,MAAMC,iBAAAA,GAAoBhB,sBAAuBU,CAAAA,IAAAA,CAAKO,SAAS,CAAA;;AAG/D,IAAA,IAAID,qBAAqBF,iBAAmB,EAAA;AAC1C,QAAA,OAAOJ,KAAKG,YAAY;AAC1B;AAEA,IAAA,IAAIC,iBAAmB,EAAA;QACrB,OAAOH,YAAAA;AACT;IAEA,OAAO,IAAA;AACT;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"map-relation.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/map-relation.ts"],"names":[],"mappings":";AAMA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAsJnC,QAAA,MAAM,kBAAkB,+CArHD,GAAG,KAAK,GAAG,8BAqHW,CAAC;AAC9C,QAAA,MAAM,8BAA8B,kPAAiC,CAAC;AAEtE,OAAO,EACL,kBAAkB,IAAI,WAAW,EACjC,8BAA8B,IAAI,uBAAuB,GAC1D,CAAC"}
1
+ {"version":3,"file":"map-relation.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/map-relation.ts"],"names":[],"mappings":";AAKA,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AAgJnC,QAAA,MAAM,kBAAkB,+CA/GD,GAAG,KAAK,GAAG,8BA+GW,CAAC;AAC9C,QAAA,MAAM,8BAA8B,kPAAiC,CAAC;AAEtE,OAAO,EACL,kBAAkB,IAAI,WAAW,EACjC,8BAA8B,IAAI,uBAAuB,GAC1D,CAAC"}
@@ -1,91 +1,130 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fp = require("lodash/fp");
4
- const strapiUtils = require("@strapi/utils");
5
- const isNumeric = (value) => {
6
- if (Array.isArray(value))
7
- return false;
8
- const parsed = parseInt(value, 10);
9
- return !Number.isNaN(parsed);
1
+ 'use strict';
2
+
3
+ var fp = require('lodash/fp');
4
+ var strapiUtils = require('@strapi/utils');
5
+
6
+ const isNumeric = (value)=>{
7
+ if (Array.isArray(value)) return false; // Handle [1, 'docId'] case
8
+ const parsed = parseInt(value, 10);
9
+ return !Number.isNaN(parsed);
10
10
  };
11
- const toArray = (value) => {
12
- if (fp.isNil(value))
13
- return value;
14
- if (Array.isArray(value))
15
- return value;
16
- return [value];
11
+ const toArray = (value)=>{
12
+ // Keep value as it is if it's a nullish value
13
+ if (fp.isNil(value)) return value;
14
+ if (Array.isArray(value)) return value;
15
+ return [
16
+ value
17
+ ];
17
18
  };
18
- const mapRelation = async (callback, rel, isRecursive = false) => {
19
- let relation = rel;
20
- const wrapInSet = (value) => {
21
- if (isRecursive) {
22
- return value;
19
+ /**
20
+ * There are multiple ways to create Strapi relations.
21
+ * This is a utility to traverse and transform relation data
22
+ *
23
+ *
24
+ * For consistency and ease of use, the response will always be an object with the following shape:
25
+ * { set: [{...}], connect: [{...}], disconnect: [{...}] }
26
+ *
27
+ * @example
28
+ * transformRelationData({
29
+ * onLongHand: (relation) => {
30
+ * // Change the id of the relation
31
+ * return { id: 'other' };
32
+ * },
33
+ * }, relation)
34
+ */ const mapRelation = async (callback, rel, isRecursive = false)=>{
35
+ let relation = rel;
36
+ const wrapInSet = (value)=>{
37
+ // Ignore wrapping if it's a recursive call
38
+ if (isRecursive) {
39
+ return value;
40
+ }
41
+ return {
42
+ set: toArray(value)
43
+ };
44
+ };
45
+ // undefined | null
46
+ if (fp.isNil(relation)) {
47
+ return callback(relation);
23
48
  }
24
- return { set: toArray(value) };
25
- };
26
- if (fp.isNil(relation)) {
27
- return callback(relation);
28
- }
29
- if (Array.isArray(relation)) {
30
- return strapiUtils.async.map(relation, (r) => mapRelation(callback, r, true)).then((result) => result.flat().filter(Boolean)).then(wrapInSet);
31
- }
32
- if (fp.isObject(relation)) {
33
- if ("id" in relation || "documentId" in relation) {
34
- const result = await callback(relation);
35
- return wrapInSet(result);
36
- }
37
- if (!relation.set && !relation.disconnect && !relation.connect) {
38
- return callback(relation);
49
+ // LongHand[] | ShortHand[]
50
+ if (Array.isArray(relation)) {
51
+ return strapiUtils.async.map(relation, (r)=>mapRelation(callback, r, true)).then((result)=>result.flat().filter(Boolean)).then(wrapInSet);
39
52
  }
40
- if (relation.set) {
41
- const set = await mapRelation(callback, relation.set, true);
42
- relation = { ...relation, set: toArray(set) };
53
+ // LongHand
54
+ if (fp.isObject(relation)) {
55
+ // { id: 1 } || { documentId: 1 }
56
+ if ('id' in relation || 'documentId' in relation) {
57
+ const result = await callback(relation);
58
+ return wrapInSet(result);
59
+ }
60
+ // If not connecting anything, return default visitor
61
+ if (!relation.set && !relation.disconnect && !relation.connect) {
62
+ return callback(relation);
63
+ }
64
+ // { set }
65
+ if (relation.set) {
66
+ const set = await mapRelation(callback, relation.set, true);
67
+ relation = {
68
+ ...relation,
69
+ set: toArray(set)
70
+ };
71
+ }
72
+ // { disconnect}
73
+ if (relation.disconnect) {
74
+ const disconnect = await mapRelation(callback, relation.disconnect, true);
75
+ relation = {
76
+ ...relation,
77
+ disconnect: toArray(disconnect)
78
+ };
79
+ }
80
+ // { connect }
81
+ if (relation.connect) {
82
+ // Transform the relation to connect
83
+ const connect = await mapRelation(callback, relation.connect, true);
84
+ relation = {
85
+ ...relation,
86
+ connect: toArray(connect)
87
+ };
88
+ }
89
+ return relation;
43
90
  }
44
- if (relation.disconnect) {
45
- const disconnect = await mapRelation(callback, relation.disconnect, true);
46
- relation = { ...relation, disconnect: toArray(disconnect) };
91
+ // ShortHand
92
+ if (isNumeric(relation)) {
93
+ const result = await callback({
94
+ id: relation
95
+ });
96
+ return wrapInSet(result);
47
97
  }
48
- if (relation.connect) {
49
- const connect = await mapRelation(callback, relation.connect, true);
50
- relation = { ...relation, connect: toArray(connect) };
98
+ if (typeof relation === 'string') {
99
+ const result = await callback({
100
+ documentId: relation
101
+ });
102
+ return wrapInSet(result);
51
103
  }
52
- return relation;
53
- }
54
- if (isNumeric(relation)) {
55
- const result = await callback({ id: relation });
56
- return wrapInSet(result);
57
- }
58
- if (typeof relation === "string") {
59
- const result = await callback({ documentId: relation });
60
- return wrapInSet(result);
61
- }
62
- return callback(relation);
104
+ // Anything else
105
+ return callback(relation);
63
106
  };
64
- const traverseEntityRelations = async (visitor, options, data) => {
65
- return strapiUtils.traverseEntity(
66
- async (options2, utils) => {
67
- const { attribute } = options2;
68
- if (!attribute) {
69
- return;
70
- }
71
- if (attribute.type !== "relation") {
72
- return;
73
- }
74
- if (attribute.useJoinTable === false) {
75
- return;
76
- }
77
- const target = attribute.target;
78
- if (!target) {
79
- return;
80
- }
81
- return visitor(options2, utils);
82
- },
83
- options,
84
- data
85
- );
107
+ /**
108
+ * Utility function, same as `traverseEntity` but only for relations.
109
+ */ const traverseEntityRelations = async (visitor, options, data)=>{
110
+ return strapiUtils.traverseEntity(async (options, utils)=>{
111
+ const { attribute } = options;
112
+ if (!attribute) {
113
+ return;
114
+ }
115
+ if (attribute.type !== 'relation') {
116
+ return;
117
+ }
118
+ // TODO: Handle join columns
119
+ if (attribute.useJoinTable === false) {
120
+ return;
121
+ }
122
+ return visitor(options, utils);
123
+ }, options, data);
86
124
  };
87
125
  const mapRelationCurried = fp.curry(mapRelation);
88
126
  const traverseEntityRelationsCurried = fp.curry(traverseEntityRelations);
127
+
89
128
  exports.mapRelation = mapRelationCurried;
90
129
  exports.traverseEntityRelations = traverseEntityRelationsCurried;
91
130
  //# sourceMappingURL=map-relation.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"map-relation.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/map-relation.ts"],"sourcesContent":["/* eslint-disable node/no-callback-literal */\nimport { isObject, curry, isNil } from 'lodash/fp';\n\nimport type { UID } from '@strapi/types';\nimport { traverseEntity, async } from '@strapi/utils';\n\nimport { Relation } from './types';\n\nconst isNumeric = (value: any): value is number => {\n if (Array.isArray(value)) return false; // Handle [1, 'docId'] case\n const parsed = parseInt(value, 10);\n return !Number.isNaN(parsed);\n};\n\nconst toArray = (value: any) => {\n // Keep value as it is if it's a nullish value\n if (isNil(value)) return value;\n if (Array.isArray(value)) return value;\n\n return [value];\n};\n\n/**\n * There are multiple ways to create Strapi relations.\n * This is a utility to traverse and transform relation data\n *\n *\n * For consistency and ease of use, the response will always be an object with the following shape:\n * { set: [{...}], connect: [{...}], disconnect: [{...}] }\n *\n * @example\n * transformRelationData({\n * onLongHand: (relation) => {\n * // Change the id of the relation\n * return { id: 'other' };\n * },\n * }, relation)\n */\nconst mapRelation = async (\n callback: (relation: any) => any,\n rel: Relation,\n isRecursive = false\n): Promise<Relation> => {\n let relation: Relation = rel;\n\n const wrapInSet = (value: any) => {\n // Ignore wrapping if it's a recursive call\n if (isRecursive) {\n return value;\n }\n return { set: toArray(value) };\n };\n\n // undefined | null\n if (isNil(relation)) {\n return callback(relation);\n }\n\n // LongHand[] | ShortHand[]\n if (Array.isArray(relation)) {\n return async\n .map(relation, (r: Relation) => mapRelation(callback, r, true))\n .then((result: any) => result.flat().filter(Boolean))\n .then(wrapInSet);\n }\n\n // LongHand\n if (isObject(relation)) {\n // { id: 1 } || { documentId: 1 }\n if ('id' in relation || 'documentId' in relation) {\n const result = await callback(relation);\n return wrapInSet(result);\n }\n\n // If not connecting anything, return default visitor\n if (!relation.set && !relation.disconnect && !relation.connect) {\n return callback(relation);\n }\n\n // { set }\n if (relation.set) {\n const set: any = await mapRelation(callback, relation.set, true);\n relation = { ...relation, set: toArray(set) };\n }\n\n // { disconnect}\n if (relation.disconnect) {\n const disconnect: any = await mapRelation(callback, relation.disconnect, true);\n relation = { ...relation, disconnect: toArray(disconnect) };\n }\n\n // { connect }\n if (relation.connect) {\n // Transform the relation to connect\n const connect: any = await mapRelation(callback, relation.connect, true);\n relation = { ...relation, connect: toArray(connect) };\n }\n\n return relation;\n }\n\n // ShortHand\n if (isNumeric(relation)) {\n const result = await callback({ id: relation });\n return wrapInSet(result);\n }\n\n if (typeof relation === 'string') {\n const result = await callback({ documentId: relation });\n return wrapInSet(result);\n }\n\n // Anything else\n return callback(relation);\n};\n\ntype TraverseEntity = Parameters<typeof traverseEntity>;\n\n/**\n * Utility function, same as `traverseEntity` but only for relations.\n */\nconst traverseEntityRelations = async (\n visitor: TraverseEntity[0],\n options: TraverseEntity[1],\n data: TraverseEntity[2]\n) => {\n return traverseEntity(\n async (options, utils) => {\n const { attribute } = options;\n\n if (!attribute) {\n return;\n }\n\n if (attribute.type !== 'relation') {\n return;\n }\n\n // TODO: Handle join columns\n if (attribute.useJoinTable === false) {\n return;\n }\n\n // TODO: Handle morph relations (they have multiple targets)\n const target = attribute.target as UID.Schema | undefined;\n if (!target) {\n return;\n }\n\n return visitor(options, utils);\n },\n options,\n data\n );\n};\n\nconst mapRelationCurried = curry(mapRelation);\nconst traverseEntityRelationsCurried = curry(traverseEntityRelations);\n\nexport {\n mapRelationCurried as mapRelation,\n traverseEntityRelationsCurried as traverseEntityRelations,\n};\n"],"names":["isNil","async","isObject","traverseEntity","options","curry"],"mappings":";;;;AAQA,MAAM,YAAY,CAAC,UAAgC;AAC7C,MAAA,MAAM,QAAQ,KAAK;AAAU,WAAA;AAC3B,QAAA,SAAS,SAAS,OAAO,EAAE;AAC1B,SAAA,CAAC,OAAO,MAAM,MAAM;AAC7B;AAEA,MAAM,UAAU,CAAC,UAAe;AAE9B,MAAIA,GAAAA,MAAM,KAAK;AAAU,WAAA;AACrB,MAAA,MAAM,QAAQ,KAAK;AAAU,WAAA;AAEjC,SAAO,CAAC,KAAK;AACf;AAkBA,MAAM,cAAc,OAClB,UACA,KACA,cAAc,UACQ;AACtB,MAAI,WAAqB;AAEnB,QAAA,YAAY,CAAC,UAAe;AAEhC,QAAI,aAAa;AACR,aAAA;AAAA,IACT;AACA,WAAO,EAAE,KAAK,QAAQ,KAAK,EAAE;AAAA,EAAA;AAI3B,MAAAA,GAAAA,MAAM,QAAQ,GAAG;AACnB,WAAO,SAAS,QAAQ;AAAA,EAC1B;AAGI,MAAA,MAAM,QAAQ,QAAQ,GAAG;AACpB,WAAAC,YAAA,MACJ,IAAI,UAAU,CAAC,MAAgB,YAAY,UAAU,GAAG,IAAI,CAAC,EAC7D,KAAK,CAAC,WAAgB,OAAO,OAAO,OAAO,OAAO,CAAC,EACnD,KAAK,SAAS;AAAA,EACnB;AAGI,MAAAC,GAAAA,SAAS,QAAQ,GAAG;AAElB,QAAA,QAAQ,YAAY,gBAAgB,UAAU;AAC1C,YAAA,SAAS,MAAM,SAAS,QAAQ;AACtC,aAAO,UAAU,MAAM;AAAA,IACzB;AAGI,QAAA,CAAC,SAAS,OAAO,CAAC,SAAS,cAAc,CAAC,SAAS,SAAS;AAC9D,aAAO,SAAS,QAAQ;AAAA,IAC1B;AAGA,QAAI,SAAS,KAAK;AAChB,YAAM,MAAW,MAAM,YAAY,UAAU,SAAS,KAAK,IAAI;AAC/D,iBAAW,EAAE,GAAG,UAAU,KAAK,QAAQ,GAAG;IAC5C;AAGA,QAAI,SAAS,YAAY;AACvB,YAAM,aAAkB,MAAM,YAAY,UAAU,SAAS,YAAY,IAAI;AAC7E,iBAAW,EAAE,GAAG,UAAU,YAAY,QAAQ,UAAU;IAC1D;AAGA,QAAI,SAAS,SAAS;AAEpB,YAAM,UAAe,MAAM,YAAY,UAAU,SAAS,SAAS,IAAI;AACvE,iBAAW,EAAE,GAAG,UAAU,SAAS,QAAQ,OAAO;IACpD;AAEO,WAAA;AAAA,EACT;AAGI,MAAA,UAAU,QAAQ,GAAG;AACvB,UAAM,SAAS,MAAM,SAAS,EAAE,IAAI,SAAU,CAAA;AAC9C,WAAO,UAAU,MAAM;AAAA,EACzB;AAEI,MAAA,OAAO,aAAa,UAAU;AAChC,UAAM,SAAS,MAAM,SAAS,EAAE,YAAY,SAAU,CAAA;AACtD,WAAO,UAAU,MAAM;AAAA,EACzB;AAGA,SAAO,SAAS,QAAQ;AAC1B;AAOA,MAAM,0BAA0B,OAC9B,SACA,SACA,SACG;AACI,SAAAC,YAAA;AAAA,IACL,OAAOC,UAAS,UAAU;AAClB,YAAA,EAAE,UAAcA,IAAAA;AAEtB,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AAEI,UAAA,UAAU,SAAS,YAAY;AACjC;AAAA,MACF;AAGI,UAAA,UAAU,iBAAiB,OAAO;AACpC;AAAA,MACF;AAGA,YAAM,SAAS,UAAU;AACzB,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAEO,aAAA,QAAQA,UAAS,KAAK;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEM,MAAA,qBAAqBC,SAAM,WAAW;AACtC,MAAA,iCAAiCA,SAAM,uBAAuB;;;"}
1
+ {"version":3,"file":"map-relation.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/map-relation.ts"],"sourcesContent":["/* eslint-disable node/no-callback-literal */\nimport { isObject, curry, isNil } from 'lodash/fp';\n\nimport { traverseEntity, async } from '@strapi/utils';\n\nimport { Relation } from './types';\n\nconst isNumeric = (value: any): value is number => {\n if (Array.isArray(value)) return false; // Handle [1, 'docId'] case\n const parsed = parseInt(value, 10);\n return !Number.isNaN(parsed);\n};\n\nconst toArray = (value: any) => {\n // Keep value as it is if it's a nullish value\n if (isNil(value)) return value;\n if (Array.isArray(value)) return value;\n\n return [value];\n};\n\n/**\n * There are multiple ways to create Strapi relations.\n * This is a utility to traverse and transform relation data\n *\n *\n * For consistency and ease of use, the response will always be an object with the following shape:\n * { set: [{...}], connect: [{...}], disconnect: [{...}] }\n *\n * @example\n * transformRelationData({\n * onLongHand: (relation) => {\n * // Change the id of the relation\n * return { id: 'other' };\n * },\n * }, relation)\n */\nconst mapRelation = async (\n callback: (relation: any) => any,\n rel: Relation,\n isRecursive = false\n): Promise<Relation> => {\n let relation: Relation = rel;\n\n const wrapInSet = (value: any) => {\n // Ignore wrapping if it's a recursive call\n if (isRecursive) {\n return value;\n }\n return { set: toArray(value) };\n };\n\n // undefined | null\n if (isNil(relation)) {\n return callback(relation);\n }\n\n // LongHand[] | ShortHand[]\n if (Array.isArray(relation)) {\n return async\n .map(relation, (r: Relation) => mapRelation(callback, r, true))\n .then((result: any) => result.flat().filter(Boolean))\n .then(wrapInSet);\n }\n\n // LongHand\n if (isObject(relation)) {\n // { id: 1 } || { documentId: 1 }\n if ('id' in relation || 'documentId' in relation) {\n const result = await callback(relation);\n return wrapInSet(result);\n }\n\n // If not connecting anything, return default visitor\n if (!relation.set && !relation.disconnect && !relation.connect) {\n return callback(relation);\n }\n\n // { set }\n if (relation.set) {\n const set: any = await mapRelation(callback, relation.set, true);\n relation = { ...relation, set: toArray(set) };\n }\n\n // { disconnect}\n if (relation.disconnect) {\n const disconnect: any = await mapRelation(callback, relation.disconnect, true);\n relation = { ...relation, disconnect: toArray(disconnect) };\n }\n\n // { connect }\n if (relation.connect) {\n // Transform the relation to connect\n const connect: any = await mapRelation(callback, relation.connect, true);\n relation = { ...relation, connect: toArray(connect) };\n }\n\n return relation;\n }\n\n // ShortHand\n if (isNumeric(relation)) {\n const result = await callback({ id: relation });\n return wrapInSet(result);\n }\n\n if (typeof relation === 'string') {\n const result = await callback({ documentId: relation });\n return wrapInSet(result);\n }\n\n // Anything else\n return callback(relation);\n};\n\ntype TraverseEntity = Parameters<typeof traverseEntity>;\n\n/**\n * Utility function, same as `traverseEntity` but only for relations.\n */\nconst traverseEntityRelations = async (\n visitor: TraverseEntity[0],\n options: TraverseEntity[1],\n data: TraverseEntity[2]\n) => {\n return traverseEntity(\n async (options, utils) => {\n const { attribute } = options;\n\n if (!attribute) {\n return;\n }\n\n if (attribute.type !== 'relation') {\n return;\n }\n\n // TODO: Handle join columns\n if (attribute.useJoinTable === false) {\n return;\n }\n\n return visitor(options, utils);\n },\n options,\n data\n );\n};\n\nconst mapRelationCurried = curry(mapRelation);\nconst traverseEntityRelationsCurried = curry(traverseEntityRelations);\n\nexport {\n mapRelationCurried as mapRelation,\n traverseEntityRelationsCurried as traverseEntityRelations,\n};\n"],"names":["isNumeric","value","Array","isArray","parsed","parseInt","Number","isNaN","toArray","isNil","mapRelation","callback","rel","isRecursive","relation","wrapInSet","set","async","map","r","then","result","flat","filter","Boolean","isObject","disconnect","connect","id","documentId","traverseEntityRelations","visitor","options","data","traverseEntity","utils","attribute","type","useJoinTable","mapRelationCurried","curry","traverseEntityRelationsCurried"],"mappings":";;;;;AAOA,MAAMA,YAAY,CAACC,KAAAA,GAAAA;AACjB,IAAA,IAAIC,MAAMC,OAAO,CAACF,KAAQ,CAAA,EAAA,OAAO;IACjC,MAAMG,MAAAA,GAASC,SAASJ,KAAO,EAAA,EAAA,CAAA;IAC/B,OAAO,CAACK,MAAOC,CAAAA,KAAK,CAACH,MAAAA,CAAAA;AACvB,CAAA;AAEA,MAAMI,UAAU,CAACP,KAAAA,GAAAA;;IAEf,IAAIQ,QAAAA,CAAMR,QAAQ,OAAOA,KAAAA;AACzB,IAAA,IAAIC,KAAMC,CAAAA,OAAO,CAACF,KAAAA,CAAAA,EAAQ,OAAOA,KAAAA;IAEjC,OAAO;AAACA,QAAAA;AAAM,KAAA;AAChB,CAAA;AAEA;;;;;;;;;;;;;;;AAeC,IACD,MAAMS,WAAc,GAAA,OAClBC,QACAC,EAAAA,GAAAA,EACAC,cAAc,KAAK,GAAA;AAEnB,IAAA,IAAIC,QAAqBF,GAAAA,GAAAA;AAEzB,IAAA,MAAMG,YAAY,CAACd,KAAAA,GAAAA;;AAEjB,QAAA,IAAIY,WAAa,EAAA;YACf,OAAOZ,KAAAA;AACT;QACA,OAAO;AAAEe,YAAAA,GAAAA,EAAKR,OAAQP,CAAAA,KAAAA;AAAO,SAAA;AAC/B,KAAA;;AAGA,IAAA,IAAIQ,SAAMK,QAAW,CAAA,EAAA;AACnB,QAAA,OAAOH,QAASG,CAAAA,QAAAA,CAAAA;AAClB;;IAGA,IAAIZ,KAAAA,CAAMC,OAAO,CAACW,QAAW,CAAA,EAAA;QAC3B,OAAOG,iBAAAA,CACJC,GAAG,CAACJ,QAAAA,EAAU,CAACK,CAAgBT,GAAAA,WAAAA,CAAYC,UAAUQ,CAAG,EAAA,IAAA,CAAA,CAAA,CACxDC,IAAI,CAAC,CAACC,SAAgBA,MAAOC,CAAAA,IAAI,GAAGC,MAAM,CAACC,OAC3CJ,CAAAA,CAAAA,CAAAA,IAAI,CAACL,SAAAA,CAAAA;AACV;;AAGA,IAAA,IAAIU,YAASX,QAAW,CAAA,EAAA;;QAEtB,IAAI,IAAA,IAAQA,QAAY,IAAA,YAAA,IAAgBA,QAAU,EAAA;YAChD,MAAMO,MAAAA,GAAS,MAAMV,QAASG,CAAAA,QAAAA,CAAAA;AAC9B,YAAA,OAAOC,SAAUM,CAAAA,MAAAA,CAAAA;AACnB;;QAGA,IAAI,CAACP,QAASE,CAAAA,GAAG,IAAI,CAACF,QAASY,CAAAA,UAAU,IAAI,CAACZ,QAASa,CAAAA,OAAO,EAAE;AAC9D,YAAA,OAAOhB,QAASG,CAAAA,QAAAA,CAAAA;AAClB;;QAGA,IAAIA,QAAAA,CAASE,GAAG,EAAE;AAChB,YAAA,MAAMA,MAAW,MAAMN,WAAAA,CAAYC,QAAUG,EAAAA,QAAAA,CAASE,GAAG,EAAE,IAAA,CAAA;YAC3DF,QAAW,GAAA;AAAE,gBAAA,GAAGA,QAAQ;AAAEE,gBAAAA,GAAAA,EAAKR,OAAQQ,CAAAA,GAAAA;AAAK,aAAA;AAC9C;;QAGA,IAAIF,QAAAA,CAASY,UAAU,EAAE;AACvB,YAAA,MAAMA,aAAkB,MAAMhB,WAAAA,CAAYC,QAAUG,EAAAA,QAAAA,CAASY,UAAU,EAAE,IAAA,CAAA;YACzEZ,QAAW,GAAA;AAAE,gBAAA,GAAGA,QAAQ;AAAEY,gBAAAA,UAAAA,EAAYlB,OAAQkB,CAAAA,UAAAA;AAAY,aAAA;AAC5D;;QAGA,IAAIZ,QAAAA,CAASa,OAAO,EAAE;;AAEpB,YAAA,MAAMA,UAAe,MAAMjB,WAAAA,CAAYC,QAAUG,EAAAA,QAAAA,CAASa,OAAO,EAAE,IAAA,CAAA;YACnEb,QAAW,GAAA;AAAE,gBAAA,GAAGA,QAAQ;AAAEa,gBAAAA,OAAAA,EAASnB,OAAQmB,CAAAA,OAAAA;AAAS,aAAA;AACtD;QAEA,OAAOb,QAAAA;AACT;;AAGA,IAAA,IAAId,UAAUc,QAAW,CAAA,EAAA;QACvB,MAAMO,MAAAA,GAAS,MAAMV,QAAS,CAAA;YAAEiB,EAAId,EAAAA;AAAS,SAAA,CAAA;AAC7C,QAAA,OAAOC,SAAUM,CAAAA,MAAAA,CAAAA;AACnB;IAEA,IAAI,OAAOP,aAAa,QAAU,EAAA;QAChC,MAAMO,MAAAA,GAAS,MAAMV,QAAS,CAAA;YAAEkB,UAAYf,EAAAA;AAAS,SAAA,CAAA;AACrD,QAAA,OAAOC,SAAUM,CAAAA,MAAAA,CAAAA;AACnB;;AAGA,IAAA,OAAOV,QAASG,CAAAA,QAAAA,CAAAA;AAClB,CAAA;AAIA;;AAEC,IACD,MAAMgB,uBAAAA,GAA0B,OAC9BC,OAAAA,EACAC,OACAC,EAAAA,IAAAA,GAAAA;IAEA,OAAOC,0BAAAA,CACL,OAAOF,OAASG,EAAAA,KAAAA,GAAAA;QACd,MAAM,EAAEC,SAAS,EAAE,GAAGJ,OAAAA;AAEtB,QAAA,IAAI,CAACI,SAAW,EAAA;AACd,YAAA;AACF;QAEA,IAAIA,SAAAA,CAAUC,IAAI,KAAK,UAAY,EAAA;AACjC,YAAA;AACF;;QAGA,IAAID,SAAAA,CAAUE,YAAY,KAAK,KAAO,EAAA;AACpC,YAAA;AACF;AAEA,QAAA,OAAOP,QAAQC,OAASG,EAAAA,KAAAA,CAAAA;AAC1B,KAAA,EACAH,OACAC,EAAAA,IAAAA,CAAAA;AAEJ,CAAA;AAEA,MAAMM,qBAAqBC,QAAM9B,CAAAA,WAAAA;AACjC,MAAM+B,iCAAiCD,QAAMV,CAAAA,uBAAAA;;;;;"}
@@ -1,91 +1,127 @@
1
- import { curry, isNil, isObject } from "lodash/fp";
2
- import { async, traverseEntity } from "@strapi/utils";
3
- const isNumeric = (value) => {
4
- if (Array.isArray(value))
5
- return false;
6
- const parsed = parseInt(value, 10);
7
- return !Number.isNaN(parsed);
1
+ import { curry, isNil, isObject } from 'lodash/fp';
2
+ import { async, traverseEntity } from '@strapi/utils';
3
+
4
+ const isNumeric = (value)=>{
5
+ if (Array.isArray(value)) return false; // Handle [1, 'docId'] case
6
+ const parsed = parseInt(value, 10);
7
+ return !Number.isNaN(parsed);
8
8
  };
9
- const toArray = (value) => {
10
- if (isNil(value))
11
- return value;
12
- if (Array.isArray(value))
13
- return value;
14
- return [value];
9
+ const toArray = (value)=>{
10
+ // Keep value as it is if it's a nullish value
11
+ if (isNil(value)) return value;
12
+ if (Array.isArray(value)) return value;
13
+ return [
14
+ value
15
+ ];
15
16
  };
16
- const mapRelation = async (callback, rel, isRecursive = false) => {
17
- let relation = rel;
18
- const wrapInSet = (value) => {
19
- if (isRecursive) {
20
- return value;
17
+ /**
18
+ * There are multiple ways to create Strapi relations.
19
+ * This is a utility to traverse and transform relation data
20
+ *
21
+ *
22
+ * For consistency and ease of use, the response will always be an object with the following shape:
23
+ * { set: [{...}], connect: [{...}], disconnect: [{...}] }
24
+ *
25
+ * @example
26
+ * transformRelationData({
27
+ * onLongHand: (relation) => {
28
+ * // Change the id of the relation
29
+ * return { id: 'other' };
30
+ * },
31
+ * }, relation)
32
+ */ const mapRelation = async (callback, rel, isRecursive = false)=>{
33
+ let relation = rel;
34
+ const wrapInSet = (value)=>{
35
+ // Ignore wrapping if it's a recursive call
36
+ if (isRecursive) {
37
+ return value;
38
+ }
39
+ return {
40
+ set: toArray(value)
41
+ };
42
+ };
43
+ // undefined | null
44
+ if (isNil(relation)) {
45
+ return callback(relation);
21
46
  }
22
- return { set: toArray(value) };
23
- };
24
- if (isNil(relation)) {
25
- return callback(relation);
26
- }
27
- if (Array.isArray(relation)) {
28
- return async.map(relation, (r) => mapRelation(callback, r, true)).then((result) => result.flat().filter(Boolean)).then(wrapInSet);
29
- }
30
- if (isObject(relation)) {
31
- if ("id" in relation || "documentId" in relation) {
32
- const result = await callback(relation);
33
- return wrapInSet(result);
34
- }
35
- if (!relation.set && !relation.disconnect && !relation.connect) {
36
- return callback(relation);
47
+ // LongHand[] | ShortHand[]
48
+ if (Array.isArray(relation)) {
49
+ return async.map(relation, (r)=>mapRelation(callback, r, true)).then((result)=>result.flat().filter(Boolean)).then(wrapInSet);
37
50
  }
38
- if (relation.set) {
39
- const set = await mapRelation(callback, relation.set, true);
40
- relation = { ...relation, set: toArray(set) };
51
+ // LongHand
52
+ if (isObject(relation)) {
53
+ // { id: 1 } || { documentId: 1 }
54
+ if ('id' in relation || 'documentId' in relation) {
55
+ const result = await callback(relation);
56
+ return wrapInSet(result);
57
+ }
58
+ // If not connecting anything, return default visitor
59
+ if (!relation.set && !relation.disconnect && !relation.connect) {
60
+ return callback(relation);
61
+ }
62
+ // { set }
63
+ if (relation.set) {
64
+ const set = await mapRelation(callback, relation.set, true);
65
+ relation = {
66
+ ...relation,
67
+ set: toArray(set)
68
+ };
69
+ }
70
+ // { disconnect}
71
+ if (relation.disconnect) {
72
+ const disconnect = await mapRelation(callback, relation.disconnect, true);
73
+ relation = {
74
+ ...relation,
75
+ disconnect: toArray(disconnect)
76
+ };
77
+ }
78
+ // { connect }
79
+ if (relation.connect) {
80
+ // Transform the relation to connect
81
+ const connect = await mapRelation(callback, relation.connect, true);
82
+ relation = {
83
+ ...relation,
84
+ connect: toArray(connect)
85
+ };
86
+ }
87
+ return relation;
41
88
  }
42
- if (relation.disconnect) {
43
- const disconnect = await mapRelation(callback, relation.disconnect, true);
44
- relation = { ...relation, disconnect: toArray(disconnect) };
89
+ // ShortHand
90
+ if (isNumeric(relation)) {
91
+ const result = await callback({
92
+ id: relation
93
+ });
94
+ return wrapInSet(result);
45
95
  }
46
- if (relation.connect) {
47
- const connect = await mapRelation(callback, relation.connect, true);
48
- relation = { ...relation, connect: toArray(connect) };
96
+ if (typeof relation === 'string') {
97
+ const result = await callback({
98
+ documentId: relation
99
+ });
100
+ return wrapInSet(result);
49
101
  }
50
- return relation;
51
- }
52
- if (isNumeric(relation)) {
53
- const result = await callback({ id: relation });
54
- return wrapInSet(result);
55
- }
56
- if (typeof relation === "string") {
57
- const result = await callback({ documentId: relation });
58
- return wrapInSet(result);
59
- }
60
- return callback(relation);
102
+ // Anything else
103
+ return callback(relation);
61
104
  };
62
- const traverseEntityRelations = async (visitor, options, data) => {
63
- return traverseEntity(
64
- async (options2, utils) => {
65
- const { attribute } = options2;
66
- if (!attribute) {
67
- return;
68
- }
69
- if (attribute.type !== "relation") {
70
- return;
71
- }
72
- if (attribute.useJoinTable === false) {
73
- return;
74
- }
75
- const target = attribute.target;
76
- if (!target) {
77
- return;
78
- }
79
- return visitor(options2, utils);
80
- },
81
- options,
82
- data
83
- );
105
+ /**
106
+ * Utility function, same as `traverseEntity` but only for relations.
107
+ */ const traverseEntityRelations = async (visitor, options, data)=>{
108
+ return traverseEntity(async (options, utils)=>{
109
+ const { attribute } = options;
110
+ if (!attribute) {
111
+ return;
112
+ }
113
+ if (attribute.type !== 'relation') {
114
+ return;
115
+ }
116
+ // TODO: Handle join columns
117
+ if (attribute.useJoinTable === false) {
118
+ return;
119
+ }
120
+ return visitor(options, utils);
121
+ }, options, data);
84
122
  };
85
123
  const mapRelationCurried = curry(mapRelation);
86
124
  const traverseEntityRelationsCurried = curry(traverseEntityRelations);
87
- export {
88
- mapRelationCurried as mapRelation,
89
- traverseEntityRelationsCurried as traverseEntityRelations
90
- };
125
+
126
+ export { mapRelationCurried as mapRelation, traverseEntityRelationsCurried as traverseEntityRelations };
91
127
  //# sourceMappingURL=map-relation.mjs.map