@strapi/core 5.56.0 → 5.57.0

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 (346) hide show
  1. package/dist/Strapi.d.ts +1 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +6 -3
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +6 -3
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/configuration/get-dirs.js +2 -2
  8. package/dist/configuration/get-dirs.js.map +1 -1
  9. package/dist/configuration/get-dirs.mjs +2 -2
  10. package/dist/configuration/get-dirs.mjs.map +1 -1
  11. package/dist/configuration/index.d.ts +1 -2
  12. package/dist/configuration/index.d.ts.map +1 -1
  13. package/dist/configuration/index.js +1 -2
  14. package/dist/configuration/index.js.map +1 -1
  15. package/dist/configuration/index.mjs +2 -3
  16. package/dist/configuration/index.mjs.map +1 -1
  17. package/dist/core-api/controller/collection-type.js +3 -3
  18. package/dist/core-api/controller/collection-type.js.map +1 -1
  19. package/dist/core-api/controller/collection-type.mjs +1 -1
  20. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  21. package/dist/core-api/controller/index.js +2 -2
  22. package/dist/core-api/controller/index.js.map +1 -1
  23. package/dist/core-api/controller/index.mjs +2 -2
  24. package/dist/core-api/controller/index.mjs.map +1 -1
  25. package/dist/core-api/controller/single-type.js +2 -2
  26. package/dist/core-api/controller/single-type.js.map +1 -1
  27. package/dist/core-api/controller/single-type.mjs +1 -1
  28. package/dist/core-api/controller/single-type.mjs.map +1 -1
  29. package/dist/core-api/controller/transform.d.ts +1 -4
  30. package/dist/core-api/controller/transform.d.ts.map +1 -1
  31. package/dist/core-api/controller/transform.js +8 -8
  32. package/dist/core-api/controller/transform.js.map +1 -1
  33. package/dist/core-api/controller/transform.mjs +5 -5
  34. package/dist/core-api/controller/transform.mjs.map +1 -1
  35. package/dist/core-api/routes/index.js +1 -1
  36. package/dist/core-api/routes/index.js.map +1 -1
  37. package/dist/core-api/routes/index.mjs +1 -1
  38. package/dist/core-api/routes/index.mjs.map +1 -1
  39. package/dist/core-api/service/pagination.js +9 -9
  40. package/dist/core-api/service/pagination.js.map +1 -1
  41. package/dist/core-api/service/pagination.mjs +7 -7
  42. package/dist/core-api/service/pagination.mjs.map +1 -1
  43. package/dist/domain/content-type/index.d.ts.map +1 -1
  44. package/dist/domain/content-type/index.js +1 -2
  45. package/dist/domain/content-type/index.js.map +1 -1
  46. package/dist/domain/content-type/index.mjs +1 -2
  47. package/dist/domain/content-type/index.mjs.map +1 -1
  48. package/dist/ee/index.js +4 -4
  49. package/dist/ee/index.js.map +1 -1
  50. package/dist/ee/index.mjs +3 -3
  51. package/dist/ee/index.mjs.map +1 -1
  52. package/dist/factories.d.ts.map +1 -1
  53. package/dist/factories.js +3 -2
  54. package/dist/factories.js.map +1 -1
  55. package/dist/factories.mjs +3 -2
  56. package/dist/factories.mjs.map +1 -1
  57. package/dist/index.js +1 -1
  58. package/dist/index.mjs +1 -1
  59. package/dist/loaders/apis.d.ts.map +1 -1
  60. package/dist/loaders/apis.js +1 -2
  61. package/dist/loaders/apis.js.map +1 -1
  62. package/dist/loaders/apis.mjs +1 -2
  63. package/dist/loaders/apis.mjs.map +1 -1
  64. package/dist/loaders/plugins/get-enabled-plugins.d.ts +1 -1
  65. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  66. package/dist/loaders/plugins/get-enabled-plugins.js +6 -5
  67. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  68. package/dist/loaders/plugins/get-enabled-plugins.mjs +6 -5
  69. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  70. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  71. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  72. package/dist/loaders/plugins/get-user-plugins-config.mjs +2 -2
  73. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  74. package/dist/loaders/plugins/index.js +9 -12
  75. package/dist/loaders/plugins/index.js.map +1 -1
  76. package/dist/loaders/plugins/index.mjs +9 -12
  77. package/dist/loaders/plugins/index.mjs.map +1 -1
  78. package/dist/middlewares/body.js +2 -2
  79. package/dist/middlewares/body.js.map +1 -1
  80. package/dist/middlewares/body.mjs +2 -2
  81. package/dist/middlewares/body.mjs.map +1 -1
  82. package/dist/middlewares/public.js +2 -2
  83. package/dist/middlewares/public.js.map +1 -1
  84. package/dist/middlewares/public.mjs +2 -2
  85. package/dist/middlewares/public.mjs.map +1 -1
  86. package/dist/middlewares/responses.d.ts.map +1 -1
  87. package/dist/middlewares/responses.js +1 -3
  88. package/dist/middlewares/responses.js.map +1 -1
  89. package/dist/middlewares/responses.mjs +1 -3
  90. package/dist/middlewares/responses.mjs.map +1 -1
  91. package/dist/middlewares/security.d.ts.map +1 -1
  92. package/dist/middlewares/security.js +3 -3
  93. package/dist/middlewares/security.js.map +1 -1
  94. package/dist/middlewares/security.mjs +3 -3
  95. package/dist/middlewares/security.mjs.map +1 -1
  96. package/dist/middlewares/session.js +2 -2
  97. package/dist/middlewares/session.js.map +1 -1
  98. package/dist/middlewares/session.mjs +2 -2
  99. package/dist/middlewares/session.mjs.map +1 -1
  100. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  101. package/dist/migrations/database/5.0.0-discard-drafts.js +1 -2
  102. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  103. package/dist/migrations/database/5.0.0-discard-drafts.mjs +1 -2
  104. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  105. package/dist/migrations/i18n.d.ts.map +1 -1
  106. package/dist/migrations/i18n.js +6 -4
  107. package/dist/migrations/i18n.js.map +1 -1
  108. package/dist/migrations/i18n.mjs +6 -4
  109. package/dist/migrations/i18n.mjs.map +1 -1
  110. package/dist/package.json.js +13 -13
  111. package/dist/package.json.mjs +13 -13
  112. package/dist/registries/apis.js +2 -2
  113. package/dist/registries/apis.js.map +1 -1
  114. package/dist/registries/apis.mjs +2 -2
  115. package/dist/registries/apis.mjs.map +1 -1
  116. package/dist/registries/components.js +2 -2
  117. package/dist/registries/components.js.map +1 -1
  118. package/dist/registries/components.mjs +2 -2
  119. package/dist/registries/components.mjs.map +1 -1
  120. package/dist/registries/content-types.d.ts +1 -1
  121. package/dist/registries/content-types.js +3 -3
  122. package/dist/registries/content-types.js.map +1 -1
  123. package/dist/registries/content-types.mjs +3 -3
  124. package/dist/registries/content-types.mjs.map +1 -1
  125. package/dist/registries/controllers.js +3 -3
  126. package/dist/registries/controllers.js.map +1 -1
  127. package/dist/registries/controllers.mjs +3 -3
  128. package/dist/registries/controllers.mjs.map +1 -1
  129. package/dist/registries/custom-fields.js +4 -4
  130. package/dist/registries/custom-fields.js.map +1 -1
  131. package/dist/registries/custom-fields.mjs +4 -4
  132. package/dist/registries/custom-fields.mjs.map +1 -1
  133. package/dist/registries/hooks.d.ts +1 -1
  134. package/dist/registries/hooks.js +2 -2
  135. package/dist/registries/hooks.js.map +1 -1
  136. package/dist/registries/hooks.mjs +2 -2
  137. package/dist/registries/hooks.mjs.map +1 -1
  138. package/dist/registries/middlewares.d.ts +1 -1
  139. package/dist/registries/middlewares.js +3 -3
  140. package/dist/registries/middlewares.js.map +1 -1
  141. package/dist/registries/middlewares.mjs +3 -3
  142. package/dist/registries/middlewares.mjs.map +1 -1
  143. package/dist/registries/modules.d.ts +1 -4
  144. package/dist/registries/modules.d.ts.map +1 -1
  145. package/dist/registries/modules.js +3 -3
  146. package/dist/registries/modules.js.map +1 -1
  147. package/dist/registries/modules.mjs +3 -3
  148. package/dist/registries/modules.mjs.map +1 -1
  149. package/dist/registries/plugins.js +2 -2
  150. package/dist/registries/plugins.js.map +1 -1
  151. package/dist/registries/plugins.mjs +2 -2
  152. package/dist/registries/plugins.mjs.map +1 -1
  153. package/dist/registries/policies.d.ts +1 -1
  154. package/dist/registries/policies.js +4 -4
  155. package/dist/registries/policies.js.map +1 -1
  156. package/dist/registries/policies.mjs +3 -3
  157. package/dist/registries/policies.mjs.map +1 -1
  158. package/dist/registries/services.js +3 -3
  159. package/dist/registries/services.js.map +1 -1
  160. package/dist/registries/services.mjs +3 -3
  161. package/dist/registries/services.mjs.map +1 -1
  162. package/dist/services/auth/index.js +3 -3
  163. package/dist/services/auth/index.js.map +1 -1
  164. package/dist/services/auth/index.mjs +3 -3
  165. package/dist/services/auth/index.mjs.map +1 -1
  166. package/dist/services/core-store.js +3 -3
  167. package/dist/services/core-store.js.map +1 -1
  168. package/dist/services/core-store.mjs +1 -1
  169. package/dist/services/core-store.mjs.map +1 -1
  170. package/dist/services/cron.d.ts.map +1 -1
  171. package/dist/services/cron.js +2 -4
  172. package/dist/services/cron.js.map +1 -1
  173. package/dist/services/cron.mjs +2 -4
  174. package/dist/services/cron.mjs.map +1 -1
  175. package/dist/services/document-service/attributes/index.js +2 -2
  176. package/dist/services/document-service/attributes/index.js.map +1 -1
  177. package/dist/services/document-service/attributes/index.mjs +1 -1
  178. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  179. package/dist/services/document-service/attributes/transforms.js +3 -3
  180. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  181. package/dist/services/document-service/attributes/transforms.mjs +2 -2
  182. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  183. package/dist/services/document-service/components.d.ts.map +1 -1
  184. package/dist/services/document-service/components.js +13 -14
  185. package/dist/services/document-service/components.js.map +1 -1
  186. package/dist/services/document-service/components.mjs +12 -13
  187. package/dist/services/document-service/components.mjs.map +1 -1
  188. package/dist/services/document-service/draft-and-publish.js +65 -38
  189. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  190. package/dist/services/document-service/draft-and-publish.mjs +59 -32
  191. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  192. package/dist/services/document-service/entries.d.ts +2 -2
  193. package/dist/services/document-service/entries.d.ts.map +1 -1
  194. package/dist/services/document-service/entries.js +16 -8
  195. package/dist/services/document-service/entries.js.map +1 -1
  196. package/dist/services/document-service/entries.mjs +17 -9
  197. package/dist/services/document-service/entries.mjs.map +1 -1
  198. package/dist/services/document-service/first-published-at.js +7 -5
  199. package/dist/services/document-service/first-published-at.js.map +1 -1
  200. package/dist/services/document-service/first-published-at.mjs +7 -5
  201. package/dist/services/document-service/first-published-at.mjs.map +1 -1
  202. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  203. package/dist/services/document-service/internationalization.js +37 -28
  204. package/dist/services/document-service/internationalization.js.map +1 -1
  205. package/dist/services/document-service/internationalization.mjs +33 -24
  206. package/dist/services/document-service/internationalization.mjs.map +1 -1
  207. package/dist/services/document-service/params.d.ts +1 -0
  208. package/dist/services/document-service/params.d.ts.map +1 -1
  209. package/dist/services/document-service/params.js +6 -4
  210. package/dist/services/document-service/params.js.map +1 -1
  211. package/dist/services/document-service/params.mjs +6 -5
  212. package/dist/services/document-service/params.mjs.map +1 -1
  213. package/dist/services/document-service/repository.d.ts.map +1 -1
  214. package/dist/services/document-service/repository.js +84 -61
  215. package/dist/services/document-service/repository.js.map +1 -1
  216. package/dist/services/document-service/repository.mjs +47 -24
  217. package/dist/services/document-service/repository.mjs.map +1 -1
  218. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  219. package/dist/services/document-service/transform/id-map.js +2 -1
  220. package/dist/services/document-service/transform/id-map.js.map +1 -1
  221. package/dist/services/document-service/transform/id-map.mjs +2 -1
  222. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  223. package/dist/services/document-service/transform/id-transform.js +2 -2
  224. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  225. package/dist/services/document-service/transform/id-transform.mjs +1 -1
  226. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  227. package/dist/services/document-service/transform/query.d.ts +3 -1
  228. package/dist/services/document-service/transform/query.d.ts.map +1 -1
  229. package/dist/services/document-service/transform/query.js +12 -6
  230. package/dist/services/document-service/transform/query.js.map +1 -1
  231. package/dist/services/document-service/transform/query.mjs +11 -5
  232. package/dist/services/document-service/transform/query.mjs.map +1 -1
  233. package/dist/services/document-service/transform/relations/extract/data-ids.js +2 -2
  234. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  235. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +1 -1
  236. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  237. package/dist/services/document-service/transform/relations/transform/data-ids.js +2 -2
  238. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  239. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +1 -1
  240. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  241. package/dist/services/document-service/transform/relations/transform/default-locale.js +1 -1
  242. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  243. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +1 -1
  244. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  245. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  246. package/dist/services/document-service/transform/relations/utils/dp.js +1 -2
  247. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  248. package/dist/services/document-service/transform/relations/utils/dp.mjs +1 -2
  249. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  250. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  251. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  252. package/dist/services/document-service/transform/relations/utils/i18n.js +2 -2
  253. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  254. package/dist/services/document-service/transform/relations/utils/i18n.mjs +2 -2
  255. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  256. package/dist/services/document-service/transform/relations/utils/map-relation.js +6 -6
  257. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  258. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +3 -3
  259. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  260. package/dist/services/document-service/transform/relations/utils/xto-one.js +3 -3
  261. package/dist/services/document-service/transform/relations/utils/xto-one.js.map +1 -1
  262. package/dist/services/document-service/transform/relations/utils/xto-one.mjs +2 -2
  263. package/dist/services/document-service/transform/relations/utils/xto-one.mjs.map +1 -1
  264. package/dist/services/document-service/utils/bidirectional-relations.js +3 -3
  265. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -1
  266. package/dist/services/document-service/utils/bidirectional-relations.mjs +3 -3
  267. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -1
  268. package/dist/services/document-service/utils/clone-relations.js +3 -3
  269. package/dist/services/document-service/utils/clone-relations.js.map +1 -1
  270. package/dist/services/document-service/utils/clone-relations.mjs +3 -3
  271. package/dist/services/document-service/utils/clone-relations.mjs.map +1 -1
  272. package/dist/services/document-service/utils/self-referential-relations.js +4 -4
  273. package/dist/services/document-service/utils/self-referential-relations.js.map +1 -1
  274. package/dist/services/document-service/utils/self-referential-relations.mjs +4 -4
  275. package/dist/services/document-service/utils/self-referential-relations.mjs.map +1 -1
  276. package/dist/services/document-service/utils/unidirectional-relations.js +3 -3
  277. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  278. package/dist/services/document-service/utils/unidirectional-relations.mjs +3 -3
  279. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  280. package/dist/services/entity-validator/index.d.ts.map +1 -1
  281. package/dist/services/entity-validator/index.js +9 -10
  282. package/dist/services/entity-validator/index.js.map +1 -1
  283. package/dist/services/entity-validator/index.mjs +4 -5
  284. package/dist/services/entity-validator/index.mjs.map +1 -1
  285. package/dist/services/localization.d.ts +4 -0
  286. package/dist/services/localization.d.ts.map +1 -0
  287. package/dist/services/localization.js +51 -0
  288. package/dist/services/localization.js.map +1 -0
  289. package/dist/services/localization.mjs +49 -0
  290. package/dist/services/localization.mjs.map +1 -0
  291. package/dist/services/server/compose-endpoint.js +7 -7
  292. package/dist/services/server/compose-endpoint.js.map +1 -1
  293. package/dist/services/server/compose-endpoint.mjs +3 -3
  294. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  295. package/dist/services/server/koa-methods.js +2 -2
  296. package/dist/services/server/koa-methods.js.map +1 -1
  297. package/dist/services/server/koa-methods.mjs +1 -1
  298. package/dist/services/server/koa-methods.mjs.map +1 -1
  299. package/dist/services/server/koa.d.ts.map +1 -1
  300. package/dist/services/server/koa.js +1 -2
  301. package/dist/services/server/koa.js.map +1 -1
  302. package/dist/services/server/koa.mjs +1 -2
  303. package/dist/services/server/koa.mjs.map +1 -1
  304. package/dist/services/server/middleware.d.ts.map +1 -1
  305. package/dist/services/server/middleware.js +1 -2
  306. package/dist/services/server/middleware.js.map +1 -1
  307. package/dist/services/server/middleware.mjs +1 -2
  308. package/dist/services/server/middleware.mjs.map +1 -1
  309. package/dist/services/server/routing.js +2 -2
  310. package/dist/services/server/routing.js.map +1 -1
  311. package/dist/services/server/routing.mjs +2 -2
  312. package/dist/services/server/routing.mjs.map +1 -1
  313. package/dist/services/utils/conditional-fields.d.ts +1 -1
  314. package/dist/services/utils/conditional-fields.d.ts.map +1 -1
  315. package/dist/services/utils/conditional-fields.js +2 -8
  316. package/dist/services/utils/conditional-fields.js.map +1 -1
  317. package/dist/services/utils/conditional-fields.mjs +2 -8
  318. package/dist/services/utils/conditional-fields.mjs.map +1 -1
  319. package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
  320. package/dist/services/utils/dynamic-zones.js +2 -8
  321. package/dist/services/utils/dynamic-zones.js.map +1 -1
  322. package/dist/services/utils/dynamic-zones.mjs +2 -8
  323. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  324. package/dist/utils/cron.js +2 -2
  325. package/dist/utils/cron.js.map +1 -1
  326. package/dist/utils/cron.mjs +1 -1
  327. package/dist/utils/cron.mjs.map +1 -1
  328. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  329. package/dist/utils/filepath-to-prop-path.js +5 -12
  330. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  331. package/dist/utils/filepath-to-prop-path.mjs +5 -11
  332. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  333. package/dist/utils/is-initialized.js +3 -3
  334. package/dist/utils/is-initialized.js.map +1 -1
  335. package/dist/utils/is-initialized.mjs +2 -2
  336. package/dist/utils/is-initialized.mjs.map +1 -1
  337. package/dist/utils/startup-logger.d.ts.map +1 -1
  338. package/dist/utils/startup-logger.js +2 -4
  339. package/dist/utils/startup-logger.js.map +1 -1
  340. package/dist/utils/startup-logger.mjs +2 -3
  341. package/dist/utils/startup-logger.mjs.map +1 -1
  342. package/dist/utils/transform-content-types-to-models.js +4 -4
  343. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  344. package/dist/utils/transform-content-types-to-models.mjs +3 -3
  345. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  346. package/package.json +13 -13
@@ -1 +1 @@
1
- {"version":3,"file":"query.mjs","sources":["../../../../src/services/document-service/transform/query.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { curry, assoc, omit } from 'lodash/fp';\nimport {\n parseHasPublishedVersionQueryParam,\n hasPublishedVersionBooleanToPublicationFilterMode,\n type PublicationFilterMode,\n} from '@strapi/utils';\n\nimport { parsePublicationFilter, getPublicationFilterCondition } from '../publication-filter';\n\nimport { pickAllowedQueryParams } from '../params';\n\nconst transformParamsToQuery = curry((uid: UID.Schema, params: any) => {\n const rawParams = (params ?? {}) as Record<string, unknown>;\n const allowlisted = pickAllowedQueryParams(rawParams);\n const query = strapi.get('query-params').transform(uid, allowlisted);\n\n const explicitPublicationFilter = parsePublicationFilter(allowlisted.publicationFilter);\n const legacyHasPublishedVersion = parseHasPublishedVersionQueryParam(\n rawParams.hasPublishedVersion\n );\n\n let effectivePublicationFilter: PublicationFilterMode | undefined = explicitPublicationFilter;\n if (effectivePublicationFilter === undefined && legacyHasPublishedVersion !== undefined) {\n effectivePublicationFilter =\n hasPublishedVersionBooleanToPublicationFilterMode(legacyHasPublishedVersion);\n }\n\n const status: 'draft' | 'published' = allowlisted.status === 'published' ? 'published' : 'draft';\n\n const baseWhere = { ...params?.lookup, ...query.where };\n\n // `transformQueryParams` leaves `publicationFilter` / `hasPublishedVersion` on the query object\n // via `...rest`; the DB layer must not receive them as extra top-level keys.\n const stripPublicationParamsFromQuery = omit([\n 'publicationFilter',\n 'hasPublishedVersion',\n ] as const);\n\n // Publication filtering must go through `query.filters`, not only `where`, so the same\n // cohort logic applies to nested populate queries (each sub-query uses `meta.uid`).\n // Merging into `where` alone breaks populate cascade — see has-published-version API tests.\n if (effectivePublicationFilter !== undefined) {\n const existingFilters = query.filters;\n\n const wrappedFilters = ({ meta, ...rest }: { meta: { uid: UID.Schema } }) => {\n let existingResult = {};\n if (typeof existingFilters === 'function') {\n existingResult = existingFilters({ meta, ...rest }) || {};\n } else if (existingFilters) {\n existingResult = existingFilters;\n }\n\n const publicationCondition = getPublicationFilterCondition(\n meta.uid,\n effectivePublicationFilter,\n status\n );\n\n if (publicationCondition && Object.keys(publicationCondition).length > 0) {\n const conditions = [existingResult, publicationCondition].filter(\n (c) => Object.keys(c).length\n );\n return { $and: conditions };\n }\n\n return existingResult;\n };\n\n const queryWithoutPublicationParams = stripPublicationParamsFromQuery(query);\n\n const transformedQuery = assoc(\n 'where',\n baseWhere,\n assoc('filters', wrappedFilters, queryWithoutPublicationParams)\n );\n\n return transformedQuery;\n }\n\n const transformedQuery = assoc('where', baseWhere, stripPublicationParamsFromQuery(query));\n\n return transformedQuery;\n});\n\nexport { transformParamsToQuery };\n"],"names":["transformParamsToQuery","curry","uid","params","rawParams","allowlisted","pickAllowedQueryParams","query","strapi","get","transform","explicitPublicationFilter","parsePublicationFilter","publicationFilter","legacyHasPublishedVersion","parseHasPublishedVersionQueryParam","hasPublishedVersion","effectivePublicationFilter","undefined","hasPublishedVersionBooleanToPublicationFilterMode","status","baseWhere","lookup","where","stripPublicationParamsFromQuery","omit","existingFilters","filters","wrappedFilters","meta","rest","existingResult","publicationCondition","getPublicationFilterCondition","Object","keys","length","conditions","filter","c","$and","queryWithoutPublicationParams","transformedQuery","assoc"],"mappings":";;;;;AAaA,MAAMA,sBAAAA,GAAyBC,KAAAA,CAAM,CAACC,GAAAA,EAAiBC,MAAAA,GAAAA;IACrD,MAAMC,SAAAA,GAAaD,UAAU,EAAC;AAC9B,IAAA,MAAME,cAAcC,sBAAAA,CAAuBF,SAAAA,CAAAA;AAC3C,IAAA,MAAMG,QAAQC,MAAAA,CAAOC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACR,GAAAA,EAAKG,WAAAA,CAAAA;IAExD,MAAMM,yBAAAA,GAA4BC,sBAAAA,CAAuBP,WAAAA,CAAYQ,iBAAiB,CAAA;IACtF,MAAMC,yBAAAA,GAA4BC,kCAAAA,CAChCX,SAAAA,CAAUY,mBAAmB,CAAA;AAG/B,IAAA,IAAIC,0BAAAA,GAAgEN,yBAAAA;IACpE,IAAIM,0BAAAA,KAA+BC,SAAAA,IAAaJ,yBAAAA,KAA8BI,SAAAA,EAAW;AACvFD,QAAAA,0BAAAA,GACEE,iDAAAA,CAAkDL,yBAAAA,CAAAA;AACtD,IAAA;AAEA,IAAA,MAAMM,MAAAA,GAAgCf,WAAAA,CAAYe,MAAM,KAAK,cAAc,WAAA,GAAc,OAAA;AAEzF,IAAA,MAAMC,SAAAA,GAAY;AAAE,QAAA,GAAGlB,QAAQmB,MAAM;AAAE,QAAA,GAAGf,MAAMgB;AAAM,KAAA;;;AAItD,IAAA,MAAMC,kCAAkCC,IAAAA,CAAK;AAC3C,QAAA,mBAAA;AACA,QAAA;AACD,KAAA,CAAA;;;;AAKD,IAAA,IAAIR,+BAA+BC,SAAAA,EAAW;QAC5C,MAAMQ,eAAAA,GAAkBnB,MAAMoB,OAAO;AAErC,QAAA,MAAMC,iBAAiB,CAAC,EAAEC,IAAI,EAAE,GAAGC,IAAAA,EAAqC,GAAA;AACtE,YAAA,IAAIC,iBAAiB,EAAC;YACtB,IAAI,OAAOL,oBAAoB,UAAA,EAAY;AACzCK,gBAAAA,cAAAA,GAAiBL,eAAAA,CAAgB;AAAEG,oBAAAA,IAAAA;AAAM,oBAAA,GAAGC;AAAK,iBAAA,CAAA,IAAM,EAAC;AAC1D,YAAA,CAAA,MAAO,IAAIJ,eAAAA,EAAiB;gBAC1BK,cAAAA,GAAiBL,eAAAA;AACnB,YAAA;AAEA,YAAA,MAAMM,oBAAAA,GAAuBC,6BAAAA,CAC3BJ,IAAAA,CAAK3B,GAAG,EACRe,0BAAAA,EACAG,MAAAA,CAAAA;AAGF,YAAA,IAAIY,wBAAwBE,MAAAA,CAAOC,IAAI,CAACH,oBAAAA,CAAAA,CAAsBI,MAAM,GAAG,CAAA,EAAG;AACxE,gBAAA,MAAMC,UAAAA,GAAa;AAACN,oBAAAA,cAAAA;AAAgBC,oBAAAA;iBAAqB,CAACM,MAAM,CAC9D,CAACC,CAAAA,GAAML,OAAOC,IAAI,CAACI,GAAGH,MAAM,CAAA;gBAE9B,OAAO;oBAAEI,IAAAA,EAAMH;AAAW,iBAAA;AAC5B,YAAA;YAEA,OAAON,cAAAA;AACT,QAAA,CAAA;AAEA,QAAA,MAAMU,gCAAgCjB,+BAAAA,CAAgCjB,KAAAA,CAAAA;AAEtE,QAAA,MAAMmC,mBAAmBC,KAAAA,CACvB,OAAA,EACAtB,SAAAA,EACAsB,KAAAA,CAAM,WAAWf,cAAAA,EAAgBa,6BAAAA,CAAAA,CAAAA;QAGnC,OAAOC,gBAAAA;AACT,IAAA;AAEA,IAAA,MAAMA,gBAAAA,GAAmBC,KAAAA,CAAM,OAAA,EAAStB,SAAAA,EAAWG,+BAAAA,CAAgCjB,KAAAA,CAAAA,CAAAA;IAEnF,OAAOmC,gBAAAA;AACT,CAAA;;;;"}
1
+ {"version":3,"file":"query.mjs","sources":["../../../../src/services/document-service/transform/query.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { curry, omit } from 'lodash';\nimport {\n parseHasPublishedVersionQueryParam,\n hasPublishedVersionBooleanToPublicationFilterMode,\n type PublicationFilterMode,\n} from '@strapi/utils';\n\nimport { parsePublicationFilter, getPublicationFilterCondition } from '../publication-filter';\n\nimport { pickAllowedQueryParams } from '../params';\n\nconst transformParamsToQuery = curry((uid: UID.Schema, params: any) => {\n const rawParams = (params ?? {}) as Record<string, unknown>;\n const allowlisted = pickAllowedQueryParams(rawParams);\n const query = strapi.get('query-params').transform(uid, allowlisted);\n\n const explicitPublicationFilter = parsePublicationFilter(allowlisted.publicationFilter);\n const legacyHasPublishedVersion = parseHasPublishedVersionQueryParam(\n rawParams.hasPublishedVersion\n );\n\n let effectivePublicationFilter: PublicationFilterMode | undefined = explicitPublicationFilter;\n if (effectivePublicationFilter === undefined && legacyHasPublishedVersion !== undefined) {\n effectivePublicationFilter =\n hasPublishedVersionBooleanToPublicationFilterMode(legacyHasPublishedVersion);\n }\n\n const status: 'draft' | 'published' = allowlisted.status === 'published' ? 'published' : 'draft';\n\n const baseWhere = { ...params?.lookup, ...query.where };\n\n // `transformQueryParams` leaves `publicationFilter` / `hasPublishedVersion` on the query object\n // via `...rest`; the DB layer must not receive them as extra top-level keys.\n const queryWithoutPublicationParams = omit(query, [\n 'publicationFilter',\n 'hasPublishedVersion',\n ] as const);\n\n // Publication filtering must go through `query.filters`, not only `where`, so the same\n // cohort logic applies to nested populate queries (each sub-query uses `meta.uid`).\n // Merging into `where` alone breaks populate cascade — see has-published-version API tests.\n if (effectivePublicationFilter !== undefined) {\n const existingFilters = query.filters;\n\n const wrappedFilters = ({ meta, ...rest }: { meta: { uid: UID.Schema } }) => {\n let existingResult = {};\n if (typeof existingFilters === 'function') {\n existingResult = existingFilters({ meta, ...rest }) || {};\n } else if (existingFilters) {\n existingResult = existingFilters;\n }\n\n const publicationCondition = getPublicationFilterCondition(\n meta.uid,\n effectivePublicationFilter,\n status\n );\n\n if (publicationCondition && Object.keys(publicationCondition).length > 0) {\n const conditions = [existingResult, publicationCondition].filter(\n (c) => Object.keys(c).length\n );\n return { $and: conditions };\n }\n\n return existingResult;\n };\n\n const transformedQuery = {\n ...queryWithoutPublicationParams,\n filters: wrappedFilters,\n where: baseWhere,\n };\n\n return transformedQuery;\n }\n\n const transformedQuery = { ...queryWithoutPublicationParams, where: baseWhere };\n\n return transformedQuery;\n});\n\nexport { transformParamsToQuery };\n"],"names":["transformParamsToQuery","curry","uid","params","rawParams","allowlisted","pickAllowedQueryParams","query","strapi","get","transform","explicitPublicationFilter","parsePublicationFilter","publicationFilter","legacyHasPublishedVersion","parseHasPublishedVersionQueryParam","hasPublishedVersion","effectivePublicationFilter","undefined","hasPublishedVersionBooleanToPublicationFilterMode","status","baseWhere","lookup","where","queryWithoutPublicationParams","omit","existingFilters","filters","wrappedFilters","meta","rest","existingResult","publicationCondition","getPublicationFilterCondition","Object","keys","length","conditions","filter","c","$and","transformedQuery"],"mappings":";;;;;AAaA,MAAMA,sBAAAA,GAAyBC,KAAAA,CAAM,CAACC,GAAAA,EAAiBC,MAAAA,GAAAA;IACrD,MAAMC,SAAAA,GAAaD,UAAU,EAAC;AAC9B,IAAA,MAAME,cAAcC,sBAAAA,CAAuBF,SAAAA,CAAAA;AAC3C,IAAA,MAAMG,QAAQC,MAAAA,CAAOC,GAAG,CAAC,cAAA,CAAA,CAAgBC,SAAS,CAACR,GAAAA,EAAKG,WAAAA,CAAAA;IAExD,MAAMM,yBAAAA,GAA4BC,sBAAAA,CAAuBP,WAAAA,CAAYQ,iBAAiB,CAAA;IACtF,MAAMC,yBAAAA,GAA4BC,kCAAAA,CAChCX,SAAAA,CAAUY,mBAAmB,CAAA;AAG/B,IAAA,IAAIC,0BAAAA,GAAgEN,yBAAAA;IACpE,IAAIM,0BAAAA,KAA+BC,SAAAA,IAAaJ,yBAAAA,KAA8BI,SAAAA,EAAW;AACvFD,QAAAA,0BAAAA,GACEE,iDAAAA,CAAkDL,yBAAAA,CAAAA;AACtD,IAAA;AAEA,IAAA,MAAMM,MAAAA,GAAgCf,WAAAA,CAAYe,MAAM,KAAK,cAAc,WAAA,GAAc,OAAA;AAEzF,IAAA,MAAMC,SAAAA,GAAY;AAAE,QAAA,GAAGlB,QAAQmB,MAAM;AAAE,QAAA,GAAGf,MAAMgB;AAAM,KAAA;;;IAItD,MAAMC,6BAAAA,GAAgCC,KAAKlB,KAAAA,EAAO;AAChD,QAAA,mBAAA;AACA,QAAA;AACD,KAAA,CAAA;;;;AAKD,IAAA,IAAIU,+BAA+BC,SAAAA,EAAW;QAC5C,MAAMQ,eAAAA,GAAkBnB,MAAMoB,OAAO;AAErC,QAAA,MAAMC,iBAAiB,CAAC,EAAEC,IAAI,EAAE,GAAGC,IAAAA,EAAqC,GAAA;AACtE,YAAA,IAAIC,iBAAiB,EAAC;YACtB,IAAI,OAAOL,oBAAoB,UAAA,EAAY;AACzCK,gBAAAA,cAAAA,GAAiBL,eAAAA,CAAgB;AAAEG,oBAAAA,IAAAA;AAAM,oBAAA,GAAGC;AAAK,iBAAA,CAAA,IAAM,EAAC;AAC1D,YAAA,CAAA,MAAO,IAAIJ,eAAAA,EAAiB;gBAC1BK,cAAAA,GAAiBL,eAAAA;AACnB,YAAA;AAEA,YAAA,MAAMM,oBAAAA,GAAuBC,6BAAAA,CAC3BJ,IAAAA,CAAK3B,GAAG,EACRe,0BAAAA,EACAG,MAAAA,CAAAA;AAGF,YAAA,IAAIY,wBAAwBE,MAAAA,CAAOC,IAAI,CAACH,oBAAAA,CAAAA,CAAsBI,MAAM,GAAG,CAAA,EAAG;AACxE,gBAAA,MAAMC,UAAAA,GAAa;AAACN,oBAAAA,cAAAA;AAAgBC,oBAAAA;iBAAqB,CAACM,MAAM,CAC9D,CAACC,CAAAA,GAAML,OAAOC,IAAI,CAACI,GAAGH,MAAM,CAAA;gBAE9B,OAAO;oBAAEI,IAAAA,EAAMH;AAAW,iBAAA;AAC5B,YAAA;YAEA,OAAON,cAAAA;AACT,QAAA,CAAA;AAEA,QAAA,MAAMU,gBAAAA,GAAmB;AACvB,YAAA,GAAGjB,6BAA6B;YAChCG,OAAAA,EAASC,cAAAA;YACTL,KAAAA,EAAOF;AACT,SAAA;QAEA,OAAOoB,gBAAAA;AACT,IAAA;AAEA,IAAA,MAAMA,gBAAAA,GAAmB;AAAE,QAAA,GAAGjB,6BAA6B;QAAED,KAAAA,EAAOF;AAAU,KAAA;IAE9E,OAAOoB,gBAAAA;AACT,CAAA;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var strapiUtils = require('@strapi/utils');
5
5
  var i18n = require('../utils/i18n.js');
6
6
  var dp = require('../utils/dp.js');
@@ -11,7 +11,7 @@ const { isPolymorphic } = strapiUtils.relations;
11
11
  const MEDIA_UID = 'plugin::upload.file';
12
12
  /**
13
13
  * Load a relation documentId into the idMap.
14
- */ const addRelationDocId = fp.curry((idMap, source, targetUid, relation)=>{
14
+ */ const addRelationDocId = _.curry((idMap, source, targetUid, relation)=>{
15
15
  const targetLocale = i18n.getRelationTargetLocale(relation, {
16
16
  targetUid,
17
17
  sourceUid: source.uid,
@@ -1 +1 @@
1
- {"version":3,"file":"data-ids.js","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport type { UID } from '@strapi/types';\nimport { relations } from '@strapi/utils';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\nimport { LongHandDocument } from '../utils/types';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n}\n\n/**\n * Load a relation documentId into the idMap.\n */\nconst addRelationDocId = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n targetStatus.forEach((status) => {\n idMap.add({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status,\n });\n });\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and extract their document ids.\n * Those will later be transformed to entity ids.\n */\nconst extractDataIds = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ attribute, value }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const addDocId = addRelationDocId(idMap, source);\n\n // Skip looking up entries we're about to discard.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n return mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Regular relations will always target the same target\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n\n addDocId(targetUid, relation);\n\n // Handle positional arguments\n const position = relation.position;\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position?.before) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.before });\n }\n\n if (position?.after) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.after });\n }\n\n return relation;\n }, normalizedValue as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { extractDataIds };\n"],"names":["isPolymorphic","relations","MEDIA_UID","addRelationDocId","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","forEach","add","documentId","extractDataIds","data","traverseEntityRelations","attribute","value","isPolymorphicRelation","addDocId","normalizedValue","normalizeXToOneRelationValue","mapRelation","type","__type","target","position","positionTargetUid","before","after","schema","strapi","getModel","bind","includeMedia"],"mappings":"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"}
1
+ {"version":3,"file":"data-ids.js","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash';\n\nimport type { UID } from '@strapi/types';\nimport { relations } from '@strapi/utils';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\nimport { LongHandDocument } from '../utils/types';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n}\n\n/**\n * Load a relation documentId into the idMap.\n */\nconst addRelationDocId = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n targetStatus.forEach((status) => {\n idMap.add({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status,\n });\n });\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and extract their document ids.\n * Those will later be transformed to entity ids.\n */\nconst extractDataIds = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ attribute, value }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const addDocId = addRelationDocId(idMap, source);\n\n // Skip looking up entries we're about to discard.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n return mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Regular relations will always target the same target\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n\n addDocId(targetUid, relation);\n\n // Handle positional arguments\n const position = relation.position;\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position?.before) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.before });\n }\n\n if (position?.after) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.after });\n }\n\n return relation;\n }, normalizedValue as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { extractDataIds };\n"],"names":["isPolymorphic","relations","MEDIA_UID","addRelationDocId","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","forEach","add","documentId","extractDataIds","data","traverseEntityRelations","attribute","value","isPolymorphicRelation","addDocId","normalizedValue","normalizeXToOneRelationValue","mapRelation","type","__type","target","position","positionTargetUid","before","after","schema","strapi","getModel","bind","includeMedia"],"mappings":";;;;;;;;;AAWA,MAAM,EAAEA,aAAa,EAAE,GAAGC,qBAAAA;AAC1B,MAAMC,SAAAA,GAAY,qBAAA;AAQlB;;AAEC,IACD,MAAMC,gBAAAA,GAAmBC,OAAAA,CACvB,CAACC,KAAAA,EAAcC,QAAiBC,SAAAA,EAAuBC,QAAAA,GAAAA;IACrD,MAAMC,YAAAA,GAAeC,6BAAwBF,QAAAA,EAAU;AACrDD,QAAAA,SAAAA;AACAI,QAAAA,SAAAA,EAAWL,OAAOM,GAAG;AACrBC,QAAAA,YAAAA,EAAcP,OAAOQ;AACvB,KAAA,CAAA;IAEA,MAAMC,YAAAA,GAAeC,2BAAwBR,QAAAA,EAAU;AACrDD,QAAAA,SAAAA;AACAI,QAAAA,SAAAA,EAAWL,OAAOM,GAAG;AACrBK,QAAAA,YAAAA,EAAcX,OAAOY;AACvB,KAAA,CAAA;IAEAH,YAAAA,CAAaI,OAAO,CAAC,CAACD,MAAAA,GAAAA;AACpBb,QAAAA,KAAAA,CAAMe,GAAG,CAAC;YACRR,GAAAA,EAAKL,SAAAA;AACLc,YAAAA,UAAAA,EAAYb,SAASa,UAAU;YAC/BP,MAAAA,EAAQL,YAAAA;AACRS,YAAAA;AACF,SAAA,CAAA;AACF,IAAA,CAAA,CAAA;AACF,CAAA,CAAA;AAGF;;;AAGC,IACD,MAAMI,cAAAA,GAAiB,CAACjB,KAAAA,EAAckB,IAAAA,EAA2BjB,MAAAA,GAAAA;AAC/D,IAAA,OAAOkB,oCACL,OAAO,EAAEC,SAAS,EAAEC,KAAK,EAAE,GAAA;AACzB,QAAA,IAAI,CAACD,SAAAA,EAAW;AACd,YAAA;AACF,QAAA;AACA,QAAA,MAAME,wBAAwB3B,aAAAA,CAAcyB,SAAAA,CAAAA;QAC5C,MAAMG,QAAAA,GAAWzB,iBAAiBE,KAAAA,EAAOC,MAAAA,CAAAA;;QAGzC,MAAMuB,eAAAA,GAAkBC,oCAA6BL,SAAAA,EAAWC,KAAAA,CAAAA;AAEhE,QAAA,OAAOK,wBAAY,CAACvB,QAAAA,GAAAA;AAClB,YAAA,IAAI,CAACA,QAAAA,IAAY,CAACA,QAAAA,CAASa,UAAU,EAAE;gBACrC,OAAOb,QAAAA;AACT,YAAA;;;YAIA,IAAID,SAAAA;YACJ,IAAIkB,SAAAA,CAAUO,IAAI,KAAK,OAAA,EAAS;gBAC9BzB,SAAAA,GAAYL,SAAAA;AACd,YAAA,CAAA,MAAO,IAAIyB,qBAAAA,EAAuB;AAChCpB,gBAAAA,SAAAA,GAAYC,SAASyB,MAAM;YAC7B,CAAA,MAAO;AACL1B,gBAAAA,SAAAA,GAAYkB,UAAUS,MAAM;AAC9B,YAAA;AAEAN,YAAAA,QAAAA,CAASrB,SAAAA,EAAWC,QAAAA,CAAAA;;YAGpB,MAAM2B,QAAAA,GAAW3B,SAAS2B,QAAQ;;AAGlC,YAAA,IAAIC,iBAAAA,GAAoB7B,SAAAA;YACxB,IAAIoB,qBAAAA,IAAyBQ,UAAUF,MAAAA,EAAQ;AAC7CG,gBAAAA,iBAAAA,GAAoBD,SAASF,MAAM;AACrC,YAAA;AAEA,YAAA,IAAIE,UAAUE,MAAAA,EAAQ;AACpBT,gBAAAA,QAAAA,CAASQ,iBAAAA,EAAmB;AAAE,oBAAA,GAAG5B,QAAQ;AAAE,oBAAA,GAAG2B,QAAQ;AAAEd,oBAAAA,UAAAA,EAAYc,SAASE;AAAO,iBAAA,CAAA;AACtF,YAAA;AAEA,YAAA,IAAIF,UAAUG,KAAAA,EAAO;AACnBV,gBAAAA,QAAAA,CAASQ,iBAAAA,EAAmB;AAAE,oBAAA,GAAG5B,QAAQ;AAAE,oBAAA,GAAG2B,QAAQ;AAAEd,oBAAAA,UAAAA,EAAYc,SAASG;AAAM,iBAAA,CAAA;AACrF,YAAA;YAEA,OAAO9B,QAAAA;QACT,CAAA,EAAGqB,eAAAA,CAAAA;IACL,CAAA,EACA;AACEU,QAAAA,MAAAA,EAAQC,MAAAA,CAAOC,QAAQ,CAACnC,MAAAA,CAAOM,GAAG,CAAA;AAClC6B,QAAAA,QAAAA,EAAUD,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAACF,MAAAA,CAAAA;QAC/BG,YAAAA,EAAc;KAChB,EACApB,IAAAA,CAAAA;AAEJ;;;;"}
@@ -1,4 +1,4 @@
1
- import { curry } from 'lodash/fp';
1
+ import { curry } from 'lodash';
2
2
  import { relations } from '@strapi/utils';
3
3
  import { getRelationTargetLocale } from '../utils/i18n.mjs';
4
4
  import { getRelationTargetStatus } from '../utils/dp.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"data-ids.mjs","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport type { UID } from '@strapi/types';\nimport { relations } from '@strapi/utils';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\nimport { LongHandDocument } from '../utils/types';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n}\n\n/**\n * Load a relation documentId into the idMap.\n */\nconst addRelationDocId = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n targetStatus.forEach((status) => {\n idMap.add({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status,\n });\n });\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and extract their document ids.\n * Those will later be transformed to entity ids.\n */\nconst extractDataIds = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ attribute, value }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const addDocId = addRelationDocId(idMap, source);\n\n // Skip looking up entries we're about to discard.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n return mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Regular relations will always target the same target\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n\n addDocId(targetUid, relation);\n\n // Handle positional arguments\n const position = relation.position;\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position?.before) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.before });\n }\n\n if (position?.after) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.after });\n }\n\n return relation;\n }, normalizedValue as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { extractDataIds };\n"],"names":["isPolymorphic","relations","MEDIA_UID","addRelationDocId","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","forEach","add","documentId","extractDataIds","data","traverseEntityRelations","attribute","value","isPolymorphicRelation","addDocId","normalizedValue","normalizeXToOneRelationValue","mapRelation","type","__type","target","position","positionTargetUid","before","after","schema","strapi","getModel","bind","includeMedia"],"mappings":"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"}
1
+ {"version":3,"file":"data-ids.mjs","sources":["../../../../../../src/services/document-service/transform/relations/extract/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash';\n\nimport type { UID } from '@strapi/types';\nimport { relations } from '@strapi/utils';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\nimport { LongHandDocument } from '../utils/types';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n}\n\n/**\n * Load a relation documentId into the idMap.\n */\nconst addRelationDocId = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n targetStatus.forEach((status) => {\n idMap.add({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status,\n });\n });\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and extract their document ids.\n * Those will later be transformed to entity ids.\n */\nconst extractDataIds = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ attribute, value }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const addDocId = addRelationDocId(idMap, source);\n\n // Skip looking up entries we're about to discard.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n return mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Regular relations will always target the same target\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n\n addDocId(targetUid, relation);\n\n // Handle positional arguments\n const position = relation.position;\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position?.before) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.before });\n }\n\n if (position?.after) {\n addDocId(positionTargetUid, { ...relation, ...position, documentId: position.after });\n }\n\n return relation;\n }, normalizedValue as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { extractDataIds };\n"],"names":["isPolymorphic","relations","MEDIA_UID","addRelationDocId","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","forEach","add","documentId","extractDataIds","data","traverseEntityRelations","attribute","value","isPolymorphicRelation","addDocId","normalizedValue","normalizeXToOneRelationValue","mapRelation","type","__type","target","position","positionTargetUid","before","after","schema","strapi","getModel","bind","includeMedia"],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var strapiUtils = require('@strapi/utils');
5
5
  var i18n = require('../utils/i18n.js');
6
6
  var dp = require('../utils/dp.js');
@@ -11,7 +11,7 @@ const { isPolymorphic } = strapiUtils.relations;
11
11
  const MEDIA_UID = 'plugin::upload.file';
12
12
  /**
13
13
  * Get the entry ids for a given documentId.
14
- */ const getRelationIds = fp.curry((idMap, source, targetUid, relation)=>{
14
+ */ const getRelationIds = _.curry((idMap, source, targetUid, relation)=>{
15
15
  // locale to connect to
16
16
  const targetLocale = i18n.getRelationTargetLocale(relation, {
17
17
  targetUid,
@@ -1 +1 @@
1
- {"version":3,"file":"data-ids.js","sources":["../../../../../../src/services/document-service/transform/relations/transform/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport type { UID } from '@strapi/types';\nimport { errors, relations } from '@strapi/utils';\n\nimport { ID, LongHandDocument } from '../utils/types';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n allowMissingId?: boolean; // Whether to ignore missing ids and not throw any error\n}\n\n/**\n * Get the entry ids for a given documentId.\n */\nconst getRelationIds = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n // locale to connect to\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n // status(es) to connect to\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n const ids: ID[] = [];\n\n // Find mapping between documentID -> id(s).\n // There are scenarios where a single documentID can map to multiple ids.\n // e.g when connecting Non DP -> DP and connecting to both the draft and publish version at the same time\n for (const tStatus of targetStatus) {\n const entryId = idMap.get({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status: tStatus,\n });\n\n if (entryId) ids.push(entryId);\n }\n\n if (!ids.length && !source.allowMissingId) {\n throw new errors.ValidationError(\n `Document with id \"${relation.documentId}\", locale \"${targetLocale}\" not found`\n );\n }\n\n return ids;\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and transform document ids to entity ids.\n */\nconst transformDataIdsVisitor = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ key, value, attribute }, { set }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const getIds = getRelationIds(idMap, source);\n\n // Collapse a \"relates to one\" payload to a single entry first.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n // Transform the relation documentId to entity id\n const newRelation = await mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Find relational attributes, and return the document ids\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n const ids: ID[] = getIds(targetUid, relation);\n\n // Handle positional arguments\n const position = { ...relation.position };\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid: UID.Schema = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position.before) {\n const beforeRelation = { ...relation, ...position, documentId: position.before };\n const beforeIds: ID[] = getIds(positionTargetUid, beforeRelation);\n position.before = beforeIds.at(0);\n }\n\n if (position.after) {\n const afterRelation = { ...relation, ...position, documentId: position.after };\n position.after = getIds(positionTargetUid, afterRelation).at(0);\n }\n\n // Transform all ids to new relations\n return ids?.map((id) => {\n const newRelation = { id } as typeof relation;\n\n if (relation.position) {\n newRelation.position = position;\n }\n\n // Insert type if its a polymorphic relation\n if (isPolymorphicRelation) {\n newRelation.__type = targetUid;\n }\n\n return newRelation;\n });\n }, normalizedValue as any);\n\n set(key, newRelation as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { transformDataIdsVisitor };\n"],"names":["isPolymorphic","relations","MEDIA_UID","getRelationIds","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","ids","tStatus","entryId","get","documentId","push","length","allowMissingId","errors","ValidationError","transformDataIdsVisitor","data","traverseEntityRelations","key","value","attribute","set","isPolymorphicRelation","getIds","normalizedValue","normalizeXToOneRelationValue","newRelation","mapRelation","type","__type","target","position","positionTargetUid","before","beforeRelation","beforeIds","at","after","afterRelation","map","id","schema","strapi","getModel","bind","includeMedia"],"mappings":"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"}
1
+ {"version":3,"file":"data-ids.js","sources":["../../../../../../src/services/document-service/transform/relations/transform/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash';\n\nimport type { UID } from '@strapi/types';\nimport { errors, relations } from '@strapi/utils';\n\nimport { ID, LongHandDocument } from '../utils/types';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n allowMissingId?: boolean; // Whether to ignore missing ids and not throw any error\n}\n\n/**\n * Get the entry ids for a given documentId.\n */\nconst getRelationIds = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n // locale to connect to\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n // status(es) to connect to\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n const ids: ID[] = [];\n\n // Find mapping between documentID -> id(s).\n // There are scenarios where a single documentID can map to multiple ids.\n // e.g when connecting Non DP -> DP and connecting to both the draft and publish version at the same time\n for (const tStatus of targetStatus) {\n const entryId = idMap.get({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status: tStatus,\n });\n\n if (entryId) ids.push(entryId);\n }\n\n if (!ids.length && !source.allowMissingId) {\n throw new errors.ValidationError(\n `Document with id \"${relation.documentId}\", locale \"${targetLocale}\" not found`\n );\n }\n\n return ids;\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and transform document ids to entity ids.\n */\nconst transformDataIdsVisitor = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ key, value, attribute }, { set }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const getIds = getRelationIds(idMap, source);\n\n // Collapse a \"relates to one\" payload to a single entry first.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n // Transform the relation documentId to entity id\n const newRelation = await mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Find relational attributes, and return the document ids\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n const ids: ID[] = getIds(targetUid, relation);\n\n // Handle positional arguments\n const position = { ...relation.position };\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid: UID.Schema = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position.before) {\n const beforeRelation = { ...relation, ...position, documentId: position.before };\n const beforeIds: ID[] = getIds(positionTargetUid, beforeRelation);\n position.before = beforeIds.at(0);\n }\n\n if (position.after) {\n const afterRelation = { ...relation, ...position, documentId: position.after };\n position.after = getIds(positionTargetUid, afterRelation).at(0);\n }\n\n // Transform all ids to new relations\n return ids?.map((id) => {\n const newRelation = { id } as typeof relation;\n\n if (relation.position) {\n newRelation.position = position;\n }\n\n // Insert type if its a polymorphic relation\n if (isPolymorphicRelation) {\n newRelation.__type = targetUid;\n }\n\n return newRelation;\n });\n }, normalizedValue as any);\n\n set(key, newRelation as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { transformDataIdsVisitor };\n"],"names":["isPolymorphic","relations","MEDIA_UID","getRelationIds","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","ids","tStatus","entryId","get","documentId","push","length","allowMissingId","errors","ValidationError","transformDataIdsVisitor","data","traverseEntityRelations","key","value","attribute","set","isPolymorphicRelation","getIds","normalizedValue","normalizeXToOneRelationValue","newRelation","mapRelation","type","__type","target","position","positionTargetUid","before","beforeRelation","beforeIds","at","after","afterRelation","map","id","schema","strapi","getModel","bind","includeMedia"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { curry } from 'lodash/fp';
1
+ import { curry } from 'lodash';
2
2
  import { relations, errors } from '@strapi/utils';
3
3
  import { getRelationTargetLocale } from '../utils/i18n.mjs';
4
4
  import { getRelationTargetStatus } from '../utils/dp.mjs';
@@ -1 +1 @@
1
- {"version":3,"file":"data-ids.mjs","sources":["../../../../../../src/services/document-service/transform/relations/transform/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash/fp';\n\nimport type { UID } from '@strapi/types';\nimport { errors, relations } from '@strapi/utils';\n\nimport { ID, LongHandDocument } from '../utils/types';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n allowMissingId?: boolean; // Whether to ignore missing ids and not throw any error\n}\n\n/**\n * Get the entry ids for a given documentId.\n */\nconst getRelationIds = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n // locale to connect to\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n // status(es) to connect to\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n const ids: ID[] = [];\n\n // Find mapping between documentID -> id(s).\n // There are scenarios where a single documentID can map to multiple ids.\n // e.g when connecting Non DP -> DP and connecting to both the draft and publish version at the same time\n for (const tStatus of targetStatus) {\n const entryId = idMap.get({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status: tStatus,\n });\n\n if (entryId) ids.push(entryId);\n }\n\n if (!ids.length && !source.allowMissingId) {\n throw new errors.ValidationError(\n `Document with id \"${relation.documentId}\", locale \"${targetLocale}\" not found`\n );\n }\n\n return ids;\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and transform document ids to entity ids.\n */\nconst transformDataIdsVisitor = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ key, value, attribute }, { set }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const getIds = getRelationIds(idMap, source);\n\n // Collapse a \"relates to one\" payload to a single entry first.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n // Transform the relation documentId to entity id\n const newRelation = await mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Find relational attributes, and return the document ids\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n const ids: ID[] = getIds(targetUid, relation);\n\n // Handle positional arguments\n const position = { ...relation.position };\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid: UID.Schema = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position.before) {\n const beforeRelation = { ...relation, ...position, documentId: position.before };\n const beforeIds: ID[] = getIds(positionTargetUid, beforeRelation);\n position.before = beforeIds.at(0);\n }\n\n if (position.after) {\n const afterRelation = { ...relation, ...position, documentId: position.after };\n position.after = getIds(positionTargetUid, afterRelation).at(0);\n }\n\n // Transform all ids to new relations\n return ids?.map((id) => {\n const newRelation = { id } as typeof relation;\n\n if (relation.position) {\n newRelation.position = position;\n }\n\n // Insert type if its a polymorphic relation\n if (isPolymorphicRelation) {\n newRelation.__type = targetUid;\n }\n\n return newRelation;\n });\n }, normalizedValue as any);\n\n set(key, newRelation as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { transformDataIdsVisitor };\n"],"names":["isPolymorphic","relations","MEDIA_UID","getRelationIds","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","ids","tStatus","entryId","get","documentId","push","length","allowMissingId","errors","ValidationError","transformDataIdsVisitor","data","traverseEntityRelations","key","value","attribute","set","isPolymorphicRelation","getIds","normalizedValue","normalizeXToOneRelationValue","newRelation","mapRelation","type","__type","target","position","positionTargetUid","before","beforeRelation","beforeIds","at","after","afterRelation","map","id","schema","strapi","getModel","bind","includeMedia"],"mappings":"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"}
1
+ {"version":3,"file":"data-ids.mjs","sources":["../../../../../../src/services/document-service/transform/relations/transform/data-ids.ts"],"sourcesContent":["import { curry } from 'lodash';\n\nimport type { UID } from '@strapi/types';\nimport { errors, relations } from '@strapi/utils';\n\nimport { ID, LongHandDocument } from '../utils/types';\nimport { IdMap } from '../../id-map';\nimport { getRelationTargetLocale } from '../utils/i18n';\nimport { getRelationTargetStatus } from '../utils/dp';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\nimport { normalizeXToOneRelationValue } from '../utils/xto-one';\n\nconst { isPolymorphic } = relations;\nconst MEDIA_UID = 'plugin::upload.file' as UID.ContentType;\n\ninterface Options {\n uid: UID.Schema;\n locale?: string | null;\n status?: 'draft' | 'published';\n allowMissingId?: boolean; // Whether to ignore missing ids and not throw any error\n}\n\n/**\n * Get the entry ids for a given documentId.\n */\nconst getRelationIds = curry(\n (idMap: IdMap, source: Options, targetUid: UID.Schema, relation: LongHandDocument) => {\n // locale to connect to\n const targetLocale = getRelationTargetLocale(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceLocale: source.locale,\n });\n\n // status(es) to connect to\n const targetStatus = getRelationTargetStatus(relation, {\n targetUid,\n sourceUid: source.uid,\n sourceStatus: source.status,\n });\n\n const ids: ID[] = [];\n\n // Find mapping between documentID -> id(s).\n // There are scenarios where a single documentID can map to multiple ids.\n // e.g when connecting Non DP -> DP and connecting to both the draft and publish version at the same time\n for (const tStatus of targetStatus) {\n const entryId = idMap.get({\n uid: targetUid,\n documentId: relation.documentId,\n locale: targetLocale,\n status: tStatus,\n });\n\n if (entryId) ids.push(entryId);\n }\n\n if (!ids.length && !source.allowMissingId) {\n throw new errors.ValidationError(\n `Document with id \"${relation.documentId}\", locale \"${targetLocale}\" not found`\n );\n }\n\n return ids;\n }\n);\n\n/**\n * Iterate over all relations and media of a data object and transform document ids to entity ids.\n */\nconst transformDataIdsVisitor = (idMap: IdMap, data: Record<string, any>, source: Options) => {\n return traverseEntityRelations(\n async ({ key, value, attribute }, { set }) => {\n if (!attribute) {\n return;\n }\n const isPolymorphicRelation = isPolymorphic(attribute);\n const getIds = getRelationIds(idMap, source);\n\n // Collapse a \"relates to one\" payload to a single entry first.\n const normalizedValue = normalizeXToOneRelationValue(attribute, value as any);\n\n // Transform the relation documentId to entity id\n const newRelation = await mapRelation((relation) => {\n if (!relation || !relation.documentId) {\n return relation;\n }\n\n // Find relational attributes, and return the document ids\n // if its a polymorphic relation we need to get it from the data itself\n let targetUid: UID.Schema;\n if (attribute.type === 'media') {\n targetUid = MEDIA_UID;\n } else if (isPolymorphicRelation) {\n targetUid = relation.__type;\n } else {\n targetUid = attribute.target;\n }\n const ids: ID[] = getIds(targetUid, relation);\n\n // Handle positional arguments\n const position = { ...relation.position };\n\n // The positional relation target uid can be different for polymorphic relations\n let positionTargetUid: UID.Schema = targetUid;\n if (isPolymorphicRelation && position?.__type) {\n positionTargetUid = position.__type;\n }\n\n if (position.before) {\n const beforeRelation = { ...relation, ...position, documentId: position.before };\n const beforeIds: ID[] = getIds(positionTargetUid, beforeRelation);\n position.before = beforeIds.at(0);\n }\n\n if (position.after) {\n const afterRelation = { ...relation, ...position, documentId: position.after };\n position.after = getIds(positionTargetUid, afterRelation).at(0);\n }\n\n // Transform all ids to new relations\n return ids?.map((id) => {\n const newRelation = { id } as typeof relation;\n\n if (relation.position) {\n newRelation.position = position;\n }\n\n // Insert type if its a polymorphic relation\n if (isPolymorphicRelation) {\n newRelation.__type = targetUid;\n }\n\n return newRelation;\n });\n }, normalizedValue as any);\n\n set(key, newRelation as any);\n },\n {\n schema: strapi.getModel(source.uid),\n getModel: strapi.getModel.bind(strapi),\n includeMedia: true,\n },\n data\n );\n};\n\nexport { transformDataIdsVisitor };\n"],"names":["isPolymorphic","relations","MEDIA_UID","getRelationIds","curry","idMap","source","targetUid","relation","targetLocale","getRelationTargetLocale","sourceUid","uid","sourceLocale","locale","targetStatus","getRelationTargetStatus","sourceStatus","status","ids","tStatus","entryId","get","documentId","push","length","allowMissingId","errors","ValidationError","transformDataIdsVisitor","data","traverseEntityRelations","key","value","attribute","set","isPolymorphicRelation","getIds","normalizedValue","normalizeXToOneRelationValue","newRelation","mapRelation","type","__type","target","position","positionTargetUid","before","beforeRelation","beforeIds","at","after","afterRelation","map","id","schema","strapi","getModel","bind","includeMedia"],"mappings":"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"}
@@ -13,7 +13,7 @@ var mapRelation = require('../utils/map-relation.js');
13
13
  return data;
14
14
  }
15
15
  // Store the default locale to avoid multiple calls
16
- let defaultLocale;
16
+ let defaultLocale = null;
17
17
  /**
18
18
  * Traverse the entity input data and set the default locale to relations
19
19
  */ return mapRelation.traverseEntityRelations(async ({ key, value }, { set })=>{
@@ -1 +1 @@
1
- {"version":3,"file":"default-locale.js","sources":["../../../../../../src/services/document-service/transform/relations/transform/default-locale.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { getDefaultLocale, isLocalizedContentType } from '../utils/i18n';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\n\n/**\n * In scenarios like Non i18n CT -> i18n CT\n * relations can be connected to multiple locales,\n * in case user does not provide the locale, this sets it to the default one.\n */\nconst setDefaultLocaleToRelations = (data: Record<string, any>, uid: UID.Schema) => {\n // I18n CT -> anything will already have a locale set (source locale)\n if (isLocalizedContentType(uid)) {\n return data;\n }\n\n // Store the default locale to avoid multiple calls\n let defaultLocale: string;\n\n /**\n * Traverse the entity input data and set the default locale to relations\n */\n return traverseEntityRelations(\n async ({ key, value }, { set }) => {\n /**\n * Assign default locale on long hand expressed relations\n * e.g { documentId } -> { documentId, locale }\n */\n const relation = await mapRelation(async (relation) => {\n if (!relation || !relation?.documentId || relation?.locale) {\n return relation;\n }\n\n // Set default locale if not provided\n if (!defaultLocale) {\n defaultLocale = await getDefaultLocale();\n }\n\n // Assign default locale to the positional argument\n const position = relation.position;\n if (position && typeof position === 'object' && !position.locale) {\n relation.position.locale = defaultLocale;\n }\n\n return { ...relation, locale: defaultLocale };\n }, value as any);\n\n // @ts-expect-error - fix type\n set(key, relation);\n },\n { schema: strapi.getModel(uid), getModel: strapi.getModel.bind(strapi) },\n data\n );\n};\n\nexport { setDefaultLocaleToRelations };\n"],"names":["setDefaultLocaleToRelations","data","uid","isLocalizedContentType","defaultLocale","traverseEntityRelations","key","value","set","relation","mapRelation","documentId","locale","getDefaultLocale","position","schema","strapi","getModel","bind"],"mappings":";;;;;AAKA;;;;IAKA,MAAMA,2BAAAA,GAA8B,CAACC,IAAAA,EAA2BC,GAAAA,GAAAA;;AAE9D,IAAA,IAAIC,4BAAuBD,GAAAA,CAAAA,EAAM;QAC/B,OAAOD,IAAAA;AACT,IAAA;;IAGA,IAAIG,aAAAA;AAEJ;;MAGA,OAAOC,mCAAAA,CACL,OAAO,EAAEC,GAAG,EAAEC,KAAK,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAA;AAC5B;;;AAGC,UACD,MAAMC,QAAAA,GAAW,MAAMC,uBAAAA,CAAY,OAAOD,QAAAA,GAAAA;AACxC,YAAA,IAAI,CAACA,QAAAA,IAAY,CAACA,QAAAA,EAAUE,UAAAA,IAAcF,UAAUG,MAAAA,EAAQ;gBAC1D,OAAOH,QAAAA;AACT,YAAA;;AAGA,YAAA,IAAI,CAACL,aAAAA,EAAe;AAClBA,gBAAAA,aAAAA,GAAgB,MAAMS,qBAAAA,EAAAA;AACxB,YAAA;;YAGA,MAAMC,QAAAA,GAAWL,SAASK,QAAQ;AAClC,YAAA,IAAIA,YAAY,OAAOA,QAAAA,KAAa,YAAY,CAACA,QAAAA,CAASF,MAAM,EAAE;gBAChEH,QAAAA,CAASK,QAAQ,CAACF,MAAM,GAAGR,aAAAA;AAC7B,YAAA;YAEA,OAAO;AAAE,gBAAA,GAAGK,QAAQ;gBAAEG,MAAAA,EAAQR;AAAc,aAAA;QAC9C,CAAA,EAAGG,KAAAA,CAAAA;;AAGHC,QAAAA,GAAAA,CAAIF,GAAAA,EAAKG,QAAAA,CAAAA;IACX,CAAA,EACA;QAAEM,MAAAA,EAAQC,MAAAA,CAAOC,QAAQ,CAACf,GAAAA,CAAAA;AAAMe,QAAAA,QAAAA,EAAUD,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAACF,MAAAA;KAAQ,EACvEf,IAAAA,CAAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"default-locale.js","sources":["../../../../../../src/services/document-service/transform/relations/transform/default-locale.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { getDefaultLocale, isLocalizedContentType } from '../utils/i18n';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\n\n/**\n * In scenarios like Non i18n CT -> i18n CT\n * relations can be connected to multiple locales,\n * in case user does not provide the locale, this sets it to the default one.\n */\nconst setDefaultLocaleToRelations = (data: Record<string, any>, uid: UID.Schema) => {\n // I18n CT -> anything will already have a locale set (source locale)\n if (isLocalizedContentType(uid)) {\n return data;\n }\n\n // Store the default locale to avoid multiple calls\n let defaultLocale: string | null = null;\n\n /**\n * Traverse the entity input data and set the default locale to relations\n */\n return traverseEntityRelations(\n async ({ key, value }, { set }) => {\n /**\n * Assign default locale on long hand expressed relations\n * e.g { documentId } -> { documentId, locale }\n */\n const relation = await mapRelation(async (relation) => {\n if (!relation || !relation?.documentId || relation?.locale) {\n return relation;\n }\n\n // Set default locale if not provided\n if (!defaultLocale) {\n defaultLocale = await getDefaultLocale();\n }\n\n // Assign default locale to the positional argument\n const position = relation.position;\n if (position && typeof position === 'object' && !position.locale) {\n relation.position.locale = defaultLocale;\n }\n\n return { ...relation, locale: defaultLocale };\n }, value as any);\n\n // @ts-expect-error - fix type\n set(key, relation);\n },\n { schema: strapi.getModel(uid), getModel: strapi.getModel.bind(strapi) },\n data\n );\n};\n\nexport { setDefaultLocaleToRelations };\n"],"names":["setDefaultLocaleToRelations","data","uid","isLocalizedContentType","defaultLocale","traverseEntityRelations","key","value","set","relation","mapRelation","documentId","locale","getDefaultLocale","position","schema","strapi","getModel","bind"],"mappings":";;;;;AAKA;;;;IAKA,MAAMA,2BAAAA,GAA8B,CAACC,IAAAA,EAA2BC,GAAAA,GAAAA;;AAE9D,IAAA,IAAIC,4BAAuBD,GAAAA,CAAAA,EAAM;QAC/B,OAAOD,IAAAA;AACT,IAAA;;AAGA,IAAA,IAAIG,aAAAA,GAA+B,IAAA;AAEnC;;MAGA,OAAOC,mCAAAA,CACL,OAAO,EAAEC,GAAG,EAAEC,KAAK,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAA;AAC5B;;;AAGC,UACD,MAAMC,QAAAA,GAAW,MAAMC,uBAAAA,CAAY,OAAOD,QAAAA,GAAAA;AACxC,YAAA,IAAI,CAACA,QAAAA,IAAY,CAACA,QAAAA,EAAUE,UAAAA,IAAcF,UAAUG,MAAAA,EAAQ;gBAC1D,OAAOH,QAAAA;AACT,YAAA;;AAGA,YAAA,IAAI,CAACL,aAAAA,EAAe;AAClBA,gBAAAA,aAAAA,GAAgB,MAAMS,qBAAAA,EAAAA;AACxB,YAAA;;YAGA,MAAMC,QAAAA,GAAWL,SAASK,QAAQ;AAClC,YAAA,IAAIA,YAAY,OAAOA,QAAAA,KAAa,YAAY,CAACA,QAAAA,CAASF,MAAM,EAAE;gBAChEH,QAAAA,CAASK,QAAQ,CAACF,MAAM,GAAGR,aAAAA;AAC7B,YAAA;YAEA,OAAO;AAAE,gBAAA,GAAGK,QAAQ;gBAAEG,MAAAA,EAAQR;AAAc,aAAA;QAC9C,CAAA,EAAGG,KAAAA,CAAAA;;AAGHC,QAAAA,GAAAA,CAAIF,GAAAA,EAAKG,QAAAA,CAAAA;IACX,CAAA,EACA;QAAEM,MAAAA,EAAQC,MAAAA,CAAOC,QAAQ,CAACf,GAAAA,CAAAA;AAAMe,QAAAA,QAAAA,EAAUD,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAACF,MAAAA;KAAQ,EACvEf,IAAAA,CAAAA;AAEJ;;;;"}
@@ -11,7 +11,7 @@ import { traverseEntityRelations as traverseEntityRelationsCurried, mapRelation
11
11
  return data;
12
12
  }
13
13
  // Store the default locale to avoid multiple calls
14
- let defaultLocale;
14
+ let defaultLocale = null;
15
15
  /**
16
16
  * Traverse the entity input data and set the default locale to relations
17
17
  */ return traverseEntityRelationsCurried(async ({ key, value }, { set })=>{
@@ -1 +1 @@
1
- {"version":3,"file":"default-locale.mjs","sources":["../../../../../../src/services/document-service/transform/relations/transform/default-locale.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { getDefaultLocale, isLocalizedContentType } from '../utils/i18n';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\n\n/**\n * In scenarios like Non i18n CT -> i18n CT\n * relations can be connected to multiple locales,\n * in case user does not provide the locale, this sets it to the default one.\n */\nconst setDefaultLocaleToRelations = (data: Record<string, any>, uid: UID.Schema) => {\n // I18n CT -> anything will already have a locale set (source locale)\n if (isLocalizedContentType(uid)) {\n return data;\n }\n\n // Store the default locale to avoid multiple calls\n let defaultLocale: string;\n\n /**\n * Traverse the entity input data and set the default locale to relations\n */\n return traverseEntityRelations(\n async ({ key, value }, { set }) => {\n /**\n * Assign default locale on long hand expressed relations\n * e.g { documentId } -> { documentId, locale }\n */\n const relation = await mapRelation(async (relation) => {\n if (!relation || !relation?.documentId || relation?.locale) {\n return relation;\n }\n\n // Set default locale if not provided\n if (!defaultLocale) {\n defaultLocale = await getDefaultLocale();\n }\n\n // Assign default locale to the positional argument\n const position = relation.position;\n if (position && typeof position === 'object' && !position.locale) {\n relation.position.locale = defaultLocale;\n }\n\n return { ...relation, locale: defaultLocale };\n }, value as any);\n\n // @ts-expect-error - fix type\n set(key, relation);\n },\n { schema: strapi.getModel(uid), getModel: strapi.getModel.bind(strapi) },\n data\n );\n};\n\nexport { setDefaultLocaleToRelations };\n"],"names":["setDefaultLocaleToRelations","data","uid","isLocalizedContentType","defaultLocale","traverseEntityRelations","key","value","set","relation","mapRelation","documentId","locale","getDefaultLocale","position","schema","strapi","getModel","bind"],"mappings":";;;AAKA;;;;IAKA,MAAMA,2BAAAA,GAA8B,CAACC,IAAAA,EAA2BC,GAAAA,GAAAA;;AAE9D,IAAA,IAAIC,uBAAuBD,GAAAA,CAAAA,EAAM;QAC/B,OAAOD,IAAAA;AACT,IAAA;;IAGA,IAAIG,aAAAA;AAEJ;;MAGA,OAAOC,8BAAAA,CACL,OAAO,EAAEC,GAAG,EAAEC,KAAK,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAA;AAC5B;;;AAGC,UACD,MAAMC,QAAAA,GAAW,MAAMC,kBAAAA,CAAY,OAAOD,QAAAA,GAAAA;AACxC,YAAA,IAAI,CAACA,QAAAA,IAAY,CAACA,QAAAA,EAAUE,UAAAA,IAAcF,UAAUG,MAAAA,EAAQ;gBAC1D,OAAOH,QAAAA;AACT,YAAA;;AAGA,YAAA,IAAI,CAACL,aAAAA,EAAe;AAClBA,gBAAAA,aAAAA,GAAgB,MAAMS,gBAAAA,EAAAA;AACxB,YAAA;;YAGA,MAAMC,QAAAA,GAAWL,SAASK,QAAQ;AAClC,YAAA,IAAIA,YAAY,OAAOA,QAAAA,KAAa,YAAY,CAACA,QAAAA,CAASF,MAAM,EAAE;gBAChEH,QAAAA,CAASK,QAAQ,CAACF,MAAM,GAAGR,aAAAA;AAC7B,YAAA;YAEA,OAAO;AAAE,gBAAA,GAAGK,QAAQ;gBAAEG,MAAAA,EAAQR;AAAc,aAAA;QAC9C,CAAA,EAAGG,KAAAA,CAAAA;;AAGHC,QAAAA,GAAAA,CAAIF,GAAAA,EAAKG,QAAAA,CAAAA;IACX,CAAA,EACA;QAAEM,MAAAA,EAAQC,MAAAA,CAAOC,QAAQ,CAACf,GAAAA,CAAAA;AAAMe,QAAAA,QAAAA,EAAUD,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAACF,MAAAA;KAAQ,EACvEf,IAAAA,CAAAA;AAEJ;;;;"}
1
+ {"version":3,"file":"default-locale.mjs","sources":["../../../../../../src/services/document-service/transform/relations/transform/default-locale.ts"],"sourcesContent":["import type { UID } from '@strapi/types';\n\nimport { getDefaultLocale, isLocalizedContentType } from '../utils/i18n';\nimport { mapRelation, traverseEntityRelations } from '../utils/map-relation';\n\n/**\n * In scenarios like Non i18n CT -> i18n CT\n * relations can be connected to multiple locales,\n * in case user does not provide the locale, this sets it to the default one.\n */\nconst setDefaultLocaleToRelations = (data: Record<string, any>, uid: UID.Schema) => {\n // I18n CT -> anything will already have a locale set (source locale)\n if (isLocalizedContentType(uid)) {\n return data;\n }\n\n // Store the default locale to avoid multiple calls\n let defaultLocale: string | null = null;\n\n /**\n * Traverse the entity input data and set the default locale to relations\n */\n return traverseEntityRelations(\n async ({ key, value }, { set }) => {\n /**\n * Assign default locale on long hand expressed relations\n * e.g { documentId } -> { documentId, locale }\n */\n const relation = await mapRelation(async (relation) => {\n if (!relation || !relation?.documentId || relation?.locale) {\n return relation;\n }\n\n // Set default locale if not provided\n if (!defaultLocale) {\n defaultLocale = await getDefaultLocale();\n }\n\n // Assign default locale to the positional argument\n const position = relation.position;\n if (position && typeof position === 'object' && !position.locale) {\n relation.position.locale = defaultLocale;\n }\n\n return { ...relation, locale: defaultLocale };\n }, value as any);\n\n // @ts-expect-error - fix type\n set(key, relation);\n },\n { schema: strapi.getModel(uid), getModel: strapi.getModel.bind(strapi) },\n data\n );\n};\n\nexport { setDefaultLocaleToRelations };\n"],"names":["setDefaultLocaleToRelations","data","uid","isLocalizedContentType","defaultLocale","traverseEntityRelations","key","value","set","relation","mapRelation","documentId","locale","getDefaultLocale","position","schema","strapi","getModel","bind"],"mappings":";;;AAKA;;;;IAKA,MAAMA,2BAAAA,GAA8B,CAACC,IAAAA,EAA2BC,GAAAA,GAAAA;;AAE9D,IAAA,IAAIC,uBAAuBD,GAAAA,CAAAA,EAAM;QAC/B,OAAOD,IAAAA;AACT,IAAA;;AAGA,IAAA,IAAIG,aAAAA,GAA+B,IAAA;AAEnC;;MAGA,OAAOC,8BAAAA,CACL,OAAO,EAAEC,GAAG,EAAEC,KAAK,EAAE,EAAE,EAAEC,GAAG,EAAE,GAAA;AAC5B;;;AAGC,UACD,MAAMC,QAAAA,GAAW,MAAMC,kBAAAA,CAAY,OAAOD,QAAAA,GAAAA;AACxC,YAAA,IAAI,CAACA,QAAAA,IAAY,CAACA,QAAAA,EAAUE,UAAAA,IAAcF,UAAUG,MAAAA,EAAQ;gBAC1D,OAAOH,QAAAA;AACT,YAAA;;AAGA,YAAA,IAAI,CAACL,aAAAA,EAAe;AAClBA,gBAAAA,aAAAA,GAAgB,MAAMS,gBAAAA,EAAAA;AACxB,YAAA;;YAGA,MAAMC,QAAAA,GAAWL,SAASK,QAAQ;AAClC,YAAA,IAAIA,YAAY,OAAOA,QAAAA,KAAa,YAAY,CAACA,QAAAA,CAASF,MAAM,EAAE;gBAChEH,QAAAA,CAASK,QAAQ,CAACF,MAAM,GAAGR,aAAAA;AAC7B,YAAA;YAEA,OAAO;AAAE,gBAAA,GAAGK,QAAQ;gBAAEG,MAAAA,EAAQR;AAAc,aAAA;QAC9C,CAAA,EAAGG,KAAAA,CAAAA;;AAGHC,QAAAA,GAAAA,CAAIF,GAAAA,EAAKG,QAAAA,CAAAA;IACX,CAAA,EACA;QAAEM,MAAAA,EAAQC,MAAAA,CAAOC,QAAQ,CAACf,GAAAA,CAAAA;AAAMe,QAAAA,QAAAA,EAAUD,MAAAA,CAAOC,QAAQ,CAACC,IAAI,CAACF,MAAAA;KAAQ,EACvEf,IAAAA,CAAAA;AAEJ;;;;"}
@@ -1 +1 @@
1
- {"version":3,"file":"dp.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEpC,eAAO,MAAM,uBAAuB,GAClC,UAAU,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,QAAQ,CAAC,EACzD,MAAM;IACJ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KACA,MAAM,EA2CR,CAAC"}
1
+ {"version":3,"file":"dp.d.ts","sourceRoot":"","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,KAAK,MAAM,GAAG,OAAO,GAAG,WAAW,CAAC;AAEpC,eAAO,MAAM,uBAAuB,GAClC,UAAU,IAAI,CAAC,gBAAgB,EAAE,YAAY,GAAG,QAAQ,CAAC,EACzD,MAAM;IACJ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB,KACA,MAAM,EA2CR,CAAC"}
@@ -1,6 +1,5 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
4
3
  var strapiUtils = require('@strapi/utils');
5
4
 
6
5
  const getRelationTargetStatus = (relation, opts)=>{
@@ -17,7 +16,7 @@ const getRelationTargetStatus = (relation, opts)=>{
17
16
  /**
18
17
  * If both source and target have DP enabled,
19
18
  * connect it to the same status as the source status
20
- */ if (sourceHasDP && !fp.isNil(opts.sourceStatus)) {
19
+ */ if (sourceHasDP && opts.sourceStatus != null) {
21
20
  return [
22
21
  opts.sourceStatus
23
22
  ];
@@ -1 +1 @@
1
- {"version":3,"file":"dp.js","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,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;;AAOA,IAAA,MAAMC,iBAAAA,GAAoBC,MAAAA,CAAOC,QAAQ,CAACH,KAAKI,SAAS,CAAA;AACxD,IAAA,MAAMC,iBAAAA,GAAoBH,MAAAA,CAAOC,QAAQ,CAACH,KAAKM,SAAS,CAAA;IAExD,MAAMC,WAAAA,GAAcC,wBAAAA,CAAaC,kBAAkB,CAACR,iBAAAA,CAAAA;IACpD,MAAMS,WAAAA,GAAcF,wBAAAA,CAAaC,kBAAkB,CAACJ,iBAAAA,CAAAA;AAEpD,IAAA,IAAI,CAACE,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA;AAAY,SAAA;AACtB,IAAA;AAEA;;;AAGC,MACD,IAAIG,WAAAA,IAAe,CAACC,QAAAA,CAAMX,IAAAA,CAAKY,YAAY,CAAA,EAAG;QAC5C,OAAO;AAACZ,YAAAA,IAAAA,CAAKY;AAAa,SAAA;AAC5B,IAAA;AAEA;;MAGA,IAAIb,QAAAA,CAASc,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,IAAA;AAEA;;;MAIA,IAAI,CAACH,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY,SAAA;AAC/B,IAAA;;IAGA,OAAO;AAAC,QAAA;AAAQ,KAAA;AAClB;;;;"}
1
+ {"version":3,"file":"dp.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { 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 && opts.sourceStatus != null) {\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","sourceStatus","status"],"mappings":";;;;AAOO,MAAMA,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;;AAOA,IAAA,MAAMC,iBAAAA,GAAoBC,MAAAA,CAAOC,QAAQ,CAACH,KAAKI,SAAS,CAAA;AACxD,IAAA,MAAMC,iBAAAA,GAAoBH,MAAAA,CAAOC,QAAQ,CAACH,KAAKM,SAAS,CAAA;IAExD,MAAMC,WAAAA,GAAcC,wBAAAA,CAAaC,kBAAkB,CAACR,iBAAAA,CAAAA;IACpD,MAAMS,WAAAA,GAAcF,wBAAAA,CAAaC,kBAAkB,CAACJ,iBAAAA,CAAAA;AAEpD,IAAA,IAAI,CAACE,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA;AAAY,SAAA;AACtB,IAAA;AAEA;;;AAGC,MACD,IAAIG,WAAAA,IAAeV,IAAAA,CAAKW,YAAY,IAAI,IAAA,EAAM;QAC5C,OAAO;AAACX,YAAAA,IAAAA,CAAKW;AAAa,SAAA;AAC5B,IAAA;AAEA;;MAGA,IAAIZ,QAAAA,CAASa,MAAM,EAAE;AACnB,QAAA,OAAQb,SAASa,MAAM;YACrB,KAAK,WAAA;gBACH,OAAO;AAAC,oBAAA;AAAY,iBAAA;AACtB,YAAA;;gBAEE,OAAO;AAAC,oBAAA;AAAQ,iBAAA;AACpB;AACF,IAAA;AAEA;;;MAIA,IAAI,CAACF,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY,SAAA;AAC/B,IAAA;;IAGA,OAAO;AAAC,QAAA;AAAQ,KAAA;AAClB;;;;"}
@@ -1,4 +1,3 @@
1
- import { isNil } from 'lodash/fp';
2
1
  import { contentTypes } from '@strapi/utils';
3
2
 
4
3
  const getRelationTargetStatus = (relation, opts)=>{
@@ -15,7 +14,7 @@ const getRelationTargetStatus = (relation, opts)=>{
15
14
  /**
16
15
  * If both source and target have DP enabled,
17
16
  * connect it to the same status as the source status
18
- */ if (sourceHasDP && !isNil(opts.sourceStatus)) {
17
+ */ if (sourceHasDP && opts.sourceStatus != null) {
19
18
  return [
20
19
  opts.sourceStatus
21
20
  ];
@@ -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 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,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;;AAOA,IAAA,MAAMC,iBAAAA,GAAoBC,MAAAA,CAAOC,QAAQ,CAACH,KAAKI,SAAS,CAAA;AACxD,IAAA,MAAMC,iBAAAA,GAAoBH,MAAAA,CAAOC,QAAQ,CAACH,KAAKM,SAAS,CAAA;IAExD,MAAMC,WAAAA,GAAcC,YAAAA,CAAaC,kBAAkB,CAACR,iBAAAA,CAAAA;IACpD,MAAMS,WAAAA,GAAcF,YAAAA,CAAaC,kBAAkB,CAACJ,iBAAAA,CAAAA;AAEpD,IAAA,IAAI,CAACE,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA;AAAY,SAAA;AACtB,IAAA;AAEA;;;AAGC,MACD,IAAIG,WAAAA,IAAe,CAACC,KAAAA,CAAMX,IAAAA,CAAKY,YAAY,CAAA,EAAG;QAC5C,OAAO;AAACZ,YAAAA,IAAAA,CAAKY;AAAa,SAAA;AAC5B,IAAA;AAEA;;MAGA,IAAIb,QAAAA,CAASc,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,IAAA;AAEA;;;MAIA,IAAI,CAACH,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY,SAAA;AAC/B,IAAA;;IAGA,OAAO;AAAC,QAAA;AAAQ,KAAA;AAClB;;;;"}
1
+ {"version":3,"file":"dp.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { 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 && opts.sourceStatus != null) {\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","sourceStatus","status"],"mappings":";;AAOO,MAAMA,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;;AAOA,IAAA,MAAMC,iBAAAA,GAAoBC,MAAAA,CAAOC,QAAQ,CAACH,KAAKI,SAAS,CAAA;AACxD,IAAA,MAAMC,iBAAAA,GAAoBH,MAAAA,CAAOC,QAAQ,CAACH,KAAKM,SAAS,CAAA;IAExD,MAAMC,WAAAA,GAAcC,YAAAA,CAAaC,kBAAkB,CAACR,iBAAAA,CAAAA;IACpD,MAAMS,WAAAA,GAAcF,YAAAA,CAAaC,kBAAkB,CAACJ,iBAAAA,CAAAA;AAEpD,IAAA,IAAI,CAACE,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA;AAAY,SAAA;AACtB,IAAA;AAEA;;;AAGC,MACD,IAAIG,WAAAA,IAAeV,IAAAA,CAAKW,YAAY,IAAI,IAAA,EAAM;QAC5C,OAAO;AAACX,YAAAA,IAAAA,CAAKW;AAAa,SAAA;AAC5B,IAAA;AAEA;;MAGA,IAAIZ,QAAAA,CAASa,MAAM,EAAE;AACnB,QAAA,OAAQb,SAASa,MAAM;YACrB,KAAK,WAAA;gBACH,OAAO;AAAC,oBAAA;AAAY,iBAAA;AACtB,YAAA;;gBAEE,OAAO;AAAC,oBAAA;AAAQ,iBAAA;AACpB;AACF,IAAA;AAEA;;;MAIA,IAAI,CAACF,WAAAA,EAAa;QAChB,OAAO;AAAC,YAAA,OAAA;AAAS,YAAA;AAAY,SAAA;AAC/B,IAAA;;IAGA,OAAO;AAAC,QAAA;AAAQ,KAAA;AAClB;;;;"}
@@ -1,7 +1,7 @@
1
1
  import type { UID } from '@strapi/types';
2
2
  import { LongHandDocument } from './types';
3
- export declare const isLocalizedContentType: (uid: UID.Schema) => any;
4
- export declare const getDefaultLocale: () => any;
3
+ export declare const isLocalizedContentType: (uid: UID.Schema) => boolean;
4
+ export declare const getDefaultLocale: () => Promise<string | null>;
5
5
  export declare const getRelationTargetLocale: (relation: LongHandDocument, opts: {
6
6
  targetUid: UID.Schema;
7
7
  sourceUid: UID.Schema;
@@ -1 +1 @@
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,GAAI,KAAK,GAAG,CAAC,MAAM,QAGrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,WAE5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,UAAU,gBAAgB,EAC1B,MAAM;IACJ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,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,GAAI,KAAK,GAAG,CAAC,MAAM,YAGrD,CAAC;AAEF,eAAO,MAAM,gBAAgB,8BAE5B,CAAC;AAEF,eAAO,MAAM,uBAAuB,GAClC,UAAU,gBAAgB,EAC1B,MAAM;IACJ,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,SAAS,EAAE,GAAG,CAAC,MAAM,CAAC;IACtB,YAAY,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B,8BAiBF,CAAC"}
@@ -2,10 +2,10 @@
2
2
 
3
3
  const isLocalizedContentType = (uid)=>{
4
4
  const model = strapi.getModel(uid);
5
- return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);
5
+ return strapi.localization.isLocalizedContentType(model);
6
6
  };
7
7
  const getDefaultLocale = ()=>{
8
- return strapi.plugin('i18n').service('locales').getDefaultLocale();
8
+ return strapi.localization.getDefaultLocale();
9
9
  };
10
10
  const getRelationTargetLocale = (relation, opts)=>{
11
11
  const targetLocale = relation.locale || opts.sourceLocale;
@@ -1 +1 @@
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,MAAAA,CAAOC,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,gBAAAA,GAAmB,IAAA;AAC9B,IAAA,OAAOJ,OAAOE,MAAM,CAAC,QAAQC,OAAO,CAAC,WAAWC,gBAAgB,EAAA;AAClE;AAEO,MAAMC,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;AAMA,IAAA,MAAMC,YAAAA,GAAeF,QAAAA,CAASG,MAAM,IAAIF,KAAKG,YAAY;IAEzD,MAAMC,iBAAAA,GAAoBd,sBAAAA,CAAuBU,IAAAA,CAAKK,SAAS,CAAA;IAC/D,MAAMC,iBAAAA,GAAoBhB,sBAAAA,CAAuBU,IAAAA,CAAKO,SAAS,CAAA;;AAG/D,IAAA,IAAID,qBAAqBF,iBAAAA,EAAmB;AAC1C,QAAA,OAAOJ,KAAKG,YAAY;AAC1B,IAAA;AAEA,IAAA,IAAIC,iBAAAA,EAAmB;QACrB,OAAOH,YAAAA;AACT,IAAA;IAEA,OAAO,IAAA;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.localization.isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.localization.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","localization","getDefaultLocale","getRelationTargetLocale","relation","opts","targetLocale","locale","sourceLocale","isTargetLocalized","targetUid","isSourceLocalized","sourceUid"],"mappings":";;AAGO,MAAMA,yBAAyB,CAACC,GAAAA,GAAAA;IACrC,MAAMC,KAAAA,GAAQC,MAAAA,CAAOC,QAAQ,CAACH,GAAAA,CAAAA;AAC9B,IAAA,OAAOE,MAAAA,CAAOE,YAAY,CAACL,sBAAsB,CAACE,KAAAA,CAAAA;AACpD;MAEaI,gBAAAA,GAAmB,IAAA;IAC9B,OAAOH,MAAAA,CAAOE,YAAY,CAACC,gBAAgB,EAAA;AAC7C;AAEO,MAAMC,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;AAMA,IAAA,MAAMC,YAAAA,GAAeF,QAAAA,CAASG,MAAM,IAAIF,KAAKG,YAAY;IAEzD,MAAMC,iBAAAA,GAAoBb,sBAAAA,CAAuBS,IAAAA,CAAKK,SAAS,CAAA;IAC/D,MAAMC,iBAAAA,GAAoBf,sBAAAA,CAAuBS,IAAAA,CAAKO,SAAS,CAAA;;AAG/D,IAAA,IAAID,qBAAqBF,iBAAAA,EAAmB;AAC1C,QAAA,OAAOJ,KAAKG,YAAY;AAC1B,IAAA;AAEA,IAAA,IAAIC,iBAAAA,EAAmB;QACrB,OAAOH,YAAAA;AACT,IAAA;IAEA,OAAO,IAAA;AACT;;;;;;"}
@@ -1,9 +1,9 @@
1
1
  const isLocalizedContentType = (uid)=>{
2
2
  const model = strapi.getModel(uid);
3
- return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);
3
+ return strapi.localization.isLocalizedContentType(model);
4
4
  };
5
5
  const getDefaultLocale = ()=>{
6
- return strapi.plugin('i18n').service('locales').getDefaultLocale();
6
+ return strapi.localization.getDefaultLocale();
7
7
  };
8
8
  const getRelationTargetLocale = (relation, opts)=>{
9
9
  const targetLocale = relation.locale || opts.sourceLocale;
@@ -1 +1 @@
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,MAAAA,CAAOC,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,gBAAAA,GAAmB,IAAA;AAC9B,IAAA,OAAOJ,OAAOE,MAAM,CAAC,QAAQC,OAAO,CAAC,WAAWC,gBAAgB,EAAA;AAClE;AAEO,MAAMC,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;AAMA,IAAA,MAAMC,YAAAA,GAAeF,QAAAA,CAASG,MAAM,IAAIF,KAAKG,YAAY;IAEzD,MAAMC,iBAAAA,GAAoBd,sBAAAA,CAAuBU,IAAAA,CAAKK,SAAS,CAAA;IAC/D,MAAMC,iBAAAA,GAAoBhB,sBAAAA,CAAuBU,IAAAA,CAAKO,SAAS,CAAA;;AAG/D,IAAA,IAAID,qBAAqBF,iBAAAA,EAAmB;AAC1C,QAAA,OAAOJ,KAAKG,YAAY;AAC1B,IAAA;AAEA,IAAA,IAAIC,iBAAAA,EAAmB;QACrB,OAAOH,YAAAA;AACT,IAAA;IAEA,OAAO,IAAA;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.localization.isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.localization.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","localization","getDefaultLocale","getRelationTargetLocale","relation","opts","targetLocale","locale","sourceLocale","isTargetLocalized","targetUid","isSourceLocalized","sourceUid"],"mappings":"AAGO,MAAMA,yBAAyB,CAACC,GAAAA,GAAAA;IACrC,MAAMC,KAAAA,GAAQC,MAAAA,CAAOC,QAAQ,CAACH,GAAAA,CAAAA;AAC9B,IAAA,OAAOE,MAAAA,CAAOE,YAAY,CAACL,sBAAsB,CAACE,KAAAA,CAAAA;AACpD;MAEaI,gBAAAA,GAAmB,IAAA;IAC9B,OAAOH,MAAAA,CAAOE,YAAY,CAACC,gBAAgB,EAAA;AAC7C;AAEO,MAAMC,uBAAAA,GAA0B,CACrCC,QAAAA,EACAC,IAAAA,GAAAA;AAMA,IAAA,MAAMC,YAAAA,GAAeF,QAAAA,CAASG,MAAM,IAAIF,KAAKG,YAAY;IAEzD,MAAMC,iBAAAA,GAAoBb,sBAAAA,CAAuBS,IAAAA,CAAKK,SAAS,CAAA;IAC/D,MAAMC,iBAAAA,GAAoBf,sBAAAA,CAAuBS,IAAAA,CAAKO,SAAS,CAAA;;AAG/D,IAAA,IAAID,qBAAqBF,iBAAAA,EAAmB;AAC1C,QAAA,OAAOJ,KAAKG,YAAY;AAC1B,IAAA;AAEA,IAAA,IAAIC,iBAAAA,EAAmB;QACrB,OAAOH,YAAAA;AACT,IAAA;IAEA,OAAO,IAAA;AACT;;;;"}
@@ -1,6 +1,6 @@
1
1
  'use strict';
2
2
 
3
- var fp = require('lodash/fp');
3
+ var _ = require('lodash');
4
4
  var strapiUtils = require('@strapi/utils');
5
5
 
6
6
  const isNumeric = (value)=>{
@@ -10,7 +10,7 @@ const isNumeric = (value)=>{
10
10
  };
11
11
  const toArray = (value)=>{
12
12
  // Keep value as it is if it's a nullish value
13
- if (fp.isNil(value)) return value;
13
+ if (value == null) return value;
14
14
  if (Array.isArray(value)) return value;
15
15
  return [
16
16
  value
@@ -43,7 +43,7 @@ const toArray = (value)=>{
43
43
  };
44
44
  };
45
45
  // undefined | null
46
- if (fp.isNil(relation)) {
46
+ if (relation == null) {
47
47
  return callback(relation);
48
48
  }
49
49
  // LongHand[] | ShortHand[]
@@ -51,7 +51,7 @@ const toArray = (value)=>{
51
51
  return strapiUtils.async.map(relation, (r)=>mapRelation(callback, r, true)).then((result)=>result.flat().filter(Boolean)).then(wrapInSet);
52
52
  }
53
53
  // LongHand
54
- if (fp.isObject(relation)) {
54
+ if (_.isObject(relation)) {
55
55
  // { id: 1 } || { documentId: 1 }
56
56
  if ('id' in relation || 'documentId' in relation) {
57
57
  const result = await callback(relation);
@@ -129,8 +129,8 @@ const toArray = (value)=>{
129
129
  return visitor(options, utils);
130
130
  }, traverseOptions, data);
131
131
  };
132
- const mapRelationCurried = fp.curry(mapRelation);
133
- const traverseEntityRelationsCurried = fp.curry(traverseEntityRelations);
132
+ const mapRelationCurried = _.curry(mapRelation);
133
+ const traverseEntityRelationsCurried = _.curry(traverseEntityRelations);
134
134
 
135
135
  exports.mapRelation = mapRelationCurried;
136
136
  exports.traverseEntityRelations = traverseEntityRelationsCurried;
@@ -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 { 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>;\ntype TraverseEntityRelationsOptions = TraverseEntity[1] & { includeMedia?: boolean };\n\n/**\n * Utility function, same as `traverseEntity` but only for relations and, when requested, media.\n */\nconst traverseEntityRelations = async (\n visitor: TraverseEntity[0],\n options: TraverseEntityRelationsOptions,\n data: TraverseEntity[2]\n) => {\n const { includeMedia = false, ...traverseOptions } = options;\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' && !(includeMedia && attribute.type === 'media')) {\n return;\n }\n\n if (attribute.type === 'relation') {\n // TODO: Handle join columns\n if (attribute.useJoinTable === false) {\n return;\n }\n\n // morphToOne uses morphColumn (inline columns on the entity), handled directly in processData\n if (attribute.relation === 'morphToOne') {\n return;\n }\n }\n\n return visitor(options, utils);\n },\n traverseOptions,\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","includeMedia","traverseOptions","traverseEntity","utils","attribute","type","useJoinTable","mapRelationCurried","curry","traverseEntityRelationsCurried"],"mappings":"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"}
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 { curry, isObject } from 'lodash';\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 (value == null) 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 (relation == null) {\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>;\ntype TraverseEntityRelationsOptions = TraverseEntity[1] & { includeMedia?: boolean };\n\n/**\n * Utility function, same as `traverseEntity` but only for relations and, when requested, media.\n */\nconst traverseEntityRelations = async (\n visitor: TraverseEntity[0],\n options: TraverseEntityRelationsOptions,\n data: TraverseEntity[2]\n) => {\n const { includeMedia = false, ...traverseOptions } = options;\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' && !(includeMedia && attribute.type === 'media')) {\n return;\n }\n\n if (attribute.type === 'relation') {\n // TODO: Handle join columns\n if (attribute.useJoinTable === false) {\n return;\n }\n\n // morphToOne uses morphColumn (inline columns on the entity), handled directly in processData\n if (attribute.relation === 'morphToOne') {\n return;\n }\n }\n\n return visitor(options, utils);\n },\n traverseOptions,\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","mapRelation","callback","rel","isRecursive","relation","wrapInSet","set","async","map","r","then","result","flat","filter","Boolean","isObject","disconnect","connect","id","documentId","traverseEntityRelations","visitor","options","data","includeMedia","traverseOptions","traverseEntity","utils","attribute","type","useJoinTable","mapRelationCurried","curry","traverseEntityRelationsCurried"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { curry, isNil, isObject } from 'lodash/fp';
1
+ import { curry, isObject } from 'lodash';
2
2
  import { async, traverseEntity } from '@strapi/utils';
3
3
 
4
4
  const isNumeric = (value)=>{
@@ -8,7 +8,7 @@ const isNumeric = (value)=>{
8
8
  };
9
9
  const toArray = (value)=>{
10
10
  // Keep value as it is if it's a nullish value
11
- if (isNil(value)) return value;
11
+ if (value == null) return value;
12
12
  if (Array.isArray(value)) return value;
13
13
  return [
14
14
  value
@@ -41,7 +41,7 @@ const toArray = (value)=>{
41
41
  };
42
42
  };
43
43
  // undefined | null
44
- if (isNil(relation)) {
44
+ if (relation == null) {
45
45
  return callback(relation);
46
46
  }
47
47
  // LongHand[] | ShortHand[]