@strapi/core 0.0.0-experimental.2cfaca2410c03f1dee31ca18c06aedfb313e0fb4 → 0.0.0-experimental.2f08d92b24a4731a9b10bae850bce95a2eb7340e

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.

Potentially problematic release.


This version of @strapi/core might be problematic. Click here for more details.

Files changed (695) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/configuration/index.d.ts.map +1 -1
  3. package/dist/ee/index.d.ts.map +1 -1
  4. package/dist/index.js +10110 -27
  5. package/dist/index.js.map +1 -1
  6. package/dist/index.mjs +10088 -29
  7. package/dist/index.mjs.map +1 -1
  8. package/dist/middlewares/body.d.ts.map +1 -1
  9. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  10. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  11. package/dist/migrations/draft-publish.d.ts +2 -2
  12. package/dist/migrations/draft-publish.d.ts.map +1 -1
  13. package/dist/migrations/i18n.d.ts +5 -0
  14. package/dist/migrations/i18n.d.ts.map +1 -0
  15. package/dist/migrations/index.d.ts +5 -0
  16. package/dist/migrations/index.d.ts.map +1 -0
  17. package/dist/services/document-service/common.d.ts +1 -1
  18. package/dist/services/document-service/common.d.ts.map +1 -1
  19. package/dist/services/document-service/components.d.ts.map +1 -1
  20. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  21. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  22. package/dist/services/document-service/entries.d.ts +2 -2
  23. package/dist/services/document-service/entries.d.ts.map +1 -1
  24. package/dist/services/document-service/events.d.ts +1 -1
  25. package/dist/services/document-service/events.d.ts.map +1 -1
  26. package/dist/services/document-service/index.d.ts +2 -1
  27. package/dist/services/document-service/index.d.ts.map +1 -1
  28. package/dist/services/document-service/repository.d.ts.map +1 -1
  29. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  30. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  31. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  32. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  33. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  34. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  35. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  36. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  37. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  38. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  39. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  40. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  41. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  42. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  43. package/dist/services/document-service/utils/populate.d.ts +1 -1
  44. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  45. package/dist/services/document-service/utils/unidirectional-relations.d.ts +12 -9
  46. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  47. package/dist/services/entity-validator/index.d.ts +1 -1
  48. package/dist/services/entity-validator/index.d.ts.map +1 -1
  49. package/dist/services/metrics/middleware.d.ts.map +1 -1
  50. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  51. package/dist/utils/startup-logger.d.ts.map +1 -1
  52. package/dist/utils/transform-content-types-to-models.d.ts +353 -21
  53. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  54. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  55. package/package.json +27 -28
  56. package/dist/Strapi.js +0 -431
  57. package/dist/Strapi.js.map +0 -1
  58. package/dist/Strapi.mjs +0 -410
  59. package/dist/Strapi.mjs.map +0 -1
  60. package/dist/compile.js +0 -18
  61. package/dist/compile.js.map +0 -1
  62. package/dist/compile.mjs +0 -17
  63. package/dist/compile.mjs.map +0 -1
  64. package/dist/configuration/config-loader.js +0 -106
  65. package/dist/configuration/config-loader.js.map +0 -1
  66. package/dist/configuration/config-loader.mjs +0 -104
  67. package/dist/configuration/config-loader.mjs.map +0 -1
  68. package/dist/configuration/get-dirs.js +0 -31
  69. package/dist/configuration/get-dirs.js.map +0 -1
  70. package/dist/configuration/get-dirs.mjs +0 -31
  71. package/dist/configuration/get-dirs.mjs.map +0 -1
  72. package/dist/configuration/index.js +0 -80
  73. package/dist/configuration/index.js.map +0 -1
  74. package/dist/configuration/index.mjs +0 -75
  75. package/dist/configuration/index.mjs.map +0 -1
  76. package/dist/configuration/urls.js +0 -68
  77. package/dist/configuration/urls.js.map +0 -1
  78. package/dist/configuration/urls.mjs +0 -66
  79. package/dist/configuration/urls.mjs.map +0 -1
  80. package/dist/container.js +0 -30
  81. package/dist/container.js.map +0 -1
  82. package/dist/container.mjs +0 -30
  83. package/dist/container.mjs.map +0 -1
  84. package/dist/core-api/controller/collection-type.js +0 -84
  85. package/dist/core-api/controller/collection-type.js.map +0 -1
  86. package/dist/core-api/controller/collection-type.mjs +0 -84
  87. package/dist/core-api/controller/collection-type.mjs.map +0 -1
  88. package/dist/core-api/controller/index.js +0 -52
  89. package/dist/core-api/controller/index.js.map +0 -1
  90. package/dist/core-api/controller/index.mjs +0 -52
  91. package/dist/core-api/controller/index.mjs.map +0 -1
  92. package/dist/core-api/controller/single-type.js +0 -46
  93. package/dist/core-api/controller/single-type.js.map +0 -1
  94. package/dist/core-api/controller/single-type.mjs +0 -46
  95. package/dist/core-api/controller/single-type.mjs.map +0 -1
  96. package/dist/core-api/controller/transform.js +0 -76
  97. package/dist/core-api/controller/transform.js.map +0 -1
  98. package/dist/core-api/controller/transform.mjs +0 -76
  99. package/dist/core-api/controller/transform.mjs.map +0 -1
  100. package/dist/core-api/routes/index.js +0 -67
  101. package/dist/core-api/routes/index.js.map +0 -1
  102. package/dist/core-api/routes/index.mjs +0 -67
  103. package/dist/core-api/routes/index.mjs.map +0 -1
  104. package/dist/core-api/service/collection-type.js +0 -67
  105. package/dist/core-api/service/collection-type.js.map +0 -1
  106. package/dist/core-api/service/collection-type.mjs +0 -67
  107. package/dist/core-api/service/collection-type.mjs.map +0 -1
  108. package/dist/core-api/service/core-service.js +0 -12
  109. package/dist/core-api/service/core-service.js.map +0 -1
  110. package/dist/core-api/service/core-service.mjs +0 -12
  111. package/dist/core-api/service/core-service.mjs.map +0 -1
  112. package/dist/core-api/service/index.js +0 -16
  113. package/dist/core-api/service/index.js.map +0 -1
  114. package/dist/core-api/service/index.mjs +0 -16
  115. package/dist/core-api/service/index.mjs.map +0 -1
  116. package/dist/core-api/service/pagination.js +0 -52
  117. package/dist/core-api/service/pagination.js.map +0 -1
  118. package/dist/core-api/service/pagination.mjs +0 -52
  119. package/dist/core-api/service/pagination.mjs.map +0 -1
  120. package/dist/core-api/service/single-type.js +0 -46
  121. package/dist/core-api/service/single-type.js.map +0 -1
  122. package/dist/core-api/service/single-type.mjs +0 -46
  123. package/dist/core-api/service/single-type.mjs.map +0 -1
  124. package/dist/domain/content-type/index.js +0 -111
  125. package/dist/domain/content-type/index.js.map +0 -1
  126. package/dist/domain/content-type/index.mjs +0 -109
  127. package/dist/domain/content-type/index.mjs.map +0 -1
  128. package/dist/domain/content-type/validator.js +0 -77
  129. package/dist/domain/content-type/validator.js.map +0 -1
  130. package/dist/domain/content-type/validator.mjs +0 -75
  131. package/dist/domain/content-type/validator.mjs.map +0 -1
  132. package/dist/domain/module/index.js +0 -107
  133. package/dist/domain/module/index.js.map +0 -1
  134. package/dist/domain/module/index.mjs +0 -105
  135. package/dist/domain/module/index.mjs.map +0 -1
  136. package/dist/domain/module/validation.js +0 -25
  137. package/dist/domain/module/validation.js.map +0 -1
  138. package/dist/domain/module/validation.mjs +0 -25
  139. package/dist/domain/module/validation.mjs.map +0 -1
  140. package/dist/ee/index.js +0 -153
  141. package/dist/ee/index.js.map +0 -1
  142. package/dist/ee/index.mjs +0 -154
  143. package/dist/ee/index.mjs.map +0 -1
  144. package/dist/ee/license.js +0 -91
  145. package/dist/ee/license.js.map +0 -1
  146. package/dist/ee/license.mjs +0 -88
  147. package/dist/ee/license.mjs.map +0 -1
  148. package/dist/factories.js +0 -80
  149. package/dist/factories.js.map +0 -1
  150. package/dist/factories.mjs +0 -80
  151. package/dist/factories.mjs.map +0 -1
  152. package/dist/loaders/admin.js +0 -26
  153. package/dist/loaders/admin.js.map +0 -1
  154. package/dist/loaders/admin.mjs +0 -25
  155. package/dist/loaders/admin.mjs.map +0 -1
  156. package/dist/loaders/apis.js +0 -137
  157. package/dist/loaders/apis.js.map +0 -1
  158. package/dist/loaders/apis.mjs +0 -135
  159. package/dist/loaders/apis.mjs.map +0 -1
  160. package/dist/loaders/components.js +0 -38
  161. package/dist/loaders/components.js.map +0 -1
  162. package/dist/loaders/components.mjs +0 -37
  163. package/dist/loaders/components.mjs.map +0 -1
  164. package/dist/loaders/index.js +0 -24
  165. package/dist/loaders/index.js.map +0 -1
  166. package/dist/loaders/index.mjs +0 -24
  167. package/dist/loaders/index.mjs.map +0 -1
  168. package/dist/loaders/middlewares.js +0 -31
  169. package/dist/loaders/middlewares.js.map +0 -1
  170. package/dist/loaders/middlewares.mjs +0 -30
  171. package/dist/loaders/middlewares.mjs.map +0 -1
  172. package/dist/loaders/plugins/get-enabled-plugins.js +0 -141
  173. package/dist/loaders/plugins/get-enabled-plugins.js.map +0 -1
  174. package/dist/loaders/plugins/get-enabled-plugins.mjs +0 -117
  175. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +0 -1
  176. package/dist/loaders/plugins/get-user-plugins-config.js +0 -27
  177. package/dist/loaders/plugins/get-user-plugins-config.js.map +0 -1
  178. package/dist/loaders/plugins/get-user-plugins-config.mjs +0 -25
  179. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +0 -1
  180. package/dist/loaders/plugins/index.js +0 -145
  181. package/dist/loaders/plugins/index.js.map +0 -1
  182. package/dist/loaders/plugins/index.mjs +0 -125
  183. package/dist/loaders/plugins/index.mjs.map +0 -1
  184. package/dist/loaders/policies.js +0 -25
  185. package/dist/loaders/policies.js.map +0 -1
  186. package/dist/loaders/policies.mjs +0 -24
  187. package/dist/loaders/policies.mjs.map +0 -1
  188. package/dist/loaders/sanitizers.js +0 -6
  189. package/dist/loaders/sanitizers.js.map +0 -1
  190. package/dist/loaders/sanitizers.mjs +0 -7
  191. package/dist/loaders/sanitizers.mjs.map +0 -1
  192. package/dist/loaders/src-index.js +0 -33
  193. package/dist/loaders/src-index.js.map +0 -1
  194. package/dist/loaders/src-index.mjs +0 -34
  195. package/dist/loaders/src-index.mjs.map +0 -1
  196. package/dist/loaders/validators.js +0 -6
  197. package/dist/loaders/validators.js.map +0 -1
  198. package/dist/loaders/validators.mjs +0 -7
  199. package/dist/loaders/validators.mjs.map +0 -1
  200. package/dist/middlewares/body.js +0 -65
  201. package/dist/middlewares/body.js.map +0 -1
  202. package/dist/middlewares/body.mjs +0 -61
  203. package/dist/middlewares/body.mjs.map +0 -1
  204. package/dist/middlewares/compression.js +0 -8
  205. package/dist/middlewares/compression.js.map +0 -1
  206. package/dist/middlewares/compression.mjs +0 -6
  207. package/dist/middlewares/compression.mjs.map +0 -1
  208. package/dist/middlewares/cors.js +0 -53
  209. package/dist/middlewares/cors.js.map +0 -1
  210. package/dist/middlewares/cors.mjs +0 -51
  211. package/dist/middlewares/cors.mjs.map +0 -1
  212. package/dist/middlewares/errors.js +0 -33
  213. package/dist/middlewares/errors.js.map +0 -1
  214. package/dist/middlewares/errors.mjs +0 -33
  215. package/dist/middlewares/errors.mjs.map +0 -1
  216. package/dist/middlewares/favicon.js +0 -22
  217. package/dist/middlewares/favicon.js.map +0 -1
  218. package/dist/middlewares/favicon.mjs +0 -20
  219. package/dist/middlewares/favicon.mjs.map +0 -1
  220. package/dist/middlewares/index.js +0 -34
  221. package/dist/middlewares/index.js.map +0 -1
  222. package/dist/middlewares/index.mjs +0 -34
  223. package/dist/middlewares/index.mjs.map +0 -1
  224. package/dist/middlewares/ip.js +0 -8
  225. package/dist/middlewares/ip.js.map +0 -1
  226. package/dist/middlewares/ip.mjs +0 -6
  227. package/dist/middlewares/ip.mjs.map +0 -1
  228. package/dist/middlewares/logger.js +0 -12
  229. package/dist/middlewares/logger.js.map +0 -1
  230. package/dist/middlewares/logger.mjs +0 -12
  231. package/dist/middlewares/logger.mjs.map +0 -1
  232. package/dist/middlewares/powered-by.js +0 -14
  233. package/dist/middlewares/powered-by.js.map +0 -1
  234. package/dist/middlewares/powered-by.mjs +0 -14
  235. package/dist/middlewares/powered-by.mjs.map +0 -1
  236. package/dist/middlewares/public.js +0 -34
  237. package/dist/middlewares/public.js.map +0 -1
  238. package/dist/middlewares/public.mjs +0 -32
  239. package/dist/middlewares/public.mjs.map +0 -1
  240. package/dist/middlewares/query.js +0 -40
  241. package/dist/middlewares/query.js.map +0 -1
  242. package/dist/middlewares/query.mjs +0 -38
  243. package/dist/middlewares/query.mjs.map +0 -1
  244. package/dist/middlewares/response-time.js +0 -12
  245. package/dist/middlewares/response-time.js.map +0 -1
  246. package/dist/middlewares/response-time.mjs +0 -12
  247. package/dist/middlewares/response-time.mjs.map +0 -1
  248. package/dist/middlewares/responses.js +0 -15
  249. package/dist/middlewares/responses.js.map +0 -1
  250. package/dist/middlewares/responses.mjs +0 -15
  251. package/dist/middlewares/responses.mjs.map +0 -1
  252. package/dist/middlewares/security.js +0 -78
  253. package/dist/middlewares/security.js.map +0 -1
  254. package/dist/middlewares/security.mjs +0 -76
  255. package/dist/middlewares/security.mjs.map +0 -1
  256. package/dist/middlewares/session.js +0 -30
  257. package/dist/middlewares/session.js.map +0 -1
  258. package/dist/middlewares/session.mjs +0 -28
  259. package/dist/middlewares/session.mjs.map +0 -1
  260. package/dist/migrations/database/5.0.0-discard-drafts.js +0 -89
  261. package/dist/migrations/database/5.0.0-discard-drafts.js.map +0 -1
  262. package/dist/migrations/database/5.0.0-discard-drafts.mjs +0 -89
  263. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +0 -1
  264. package/dist/migrations/draft-publish.js +0 -42
  265. package/dist/migrations/draft-publish.js.map +0 -1
  266. package/dist/migrations/draft-publish.mjs +0 -42
  267. package/dist/migrations/draft-publish.mjs.map +0 -1
  268. package/dist/providers/admin.js +0 -20
  269. package/dist/providers/admin.js.map +0 -1
  270. package/dist/providers/admin.mjs +0 -21
  271. package/dist/providers/admin.mjs.map +0 -1
  272. package/dist/providers/coreStore.js +0 -11
  273. package/dist/providers/coreStore.js.map +0 -1
  274. package/dist/providers/coreStore.mjs +0 -12
  275. package/dist/providers/coreStore.mjs.map +0 -1
  276. package/dist/providers/cron.js +0 -20
  277. package/dist/providers/cron.js.map +0 -1
  278. package/dist/providers/cron.mjs +0 -21
  279. package/dist/providers/cron.mjs.map +0 -1
  280. package/dist/providers/index.js +0 -11
  281. package/dist/providers/index.js.map +0 -1
  282. package/dist/providers/index.mjs +0 -11
  283. package/dist/providers/index.mjs.map +0 -1
  284. package/dist/providers/provider.js +0 -5
  285. package/dist/providers/provider.js.map +0 -1
  286. package/dist/providers/provider.mjs +0 -5
  287. package/dist/providers/provider.mjs.map +0 -1
  288. package/dist/providers/registries.js +0 -35
  289. package/dist/providers/registries.js.map +0 -1
  290. package/dist/providers/registries.mjs +0 -36
  291. package/dist/providers/registries.mjs.map +0 -1
  292. package/dist/providers/telemetry.js +0 -19
  293. package/dist/providers/telemetry.js.map +0 -1
  294. package/dist/providers/telemetry.mjs +0 -20
  295. package/dist/providers/telemetry.mjs.map +0 -1
  296. package/dist/providers/webhooks.js +0 -30
  297. package/dist/providers/webhooks.js.map +0 -1
  298. package/dist/providers/webhooks.mjs +0 -31
  299. package/dist/providers/webhooks.mjs.map +0 -1
  300. package/dist/registries/apis.js +0 -23
  301. package/dist/registries/apis.js.map +0 -1
  302. package/dist/registries/apis.mjs +0 -24
  303. package/dist/registries/apis.mjs.map +0 -1
  304. package/dist/registries/components.js +0 -45
  305. package/dist/registries/components.js.map +0 -1
  306. package/dist/registries/components.mjs +0 -46
  307. package/dist/registries/components.mjs.map +0 -1
  308. package/dist/registries/content-types.js +0 -70
  309. package/dist/registries/content-types.js.map +0 -1
  310. package/dist/registries/content-types.mjs +0 -71
  311. package/dist/registries/content-types.mjs.map +0 -1
  312. package/dist/registries/controllers.js +0 -80
  313. package/dist/registries/controllers.js.map +0 -1
  314. package/dist/registries/controllers.mjs +0 -81
  315. package/dist/registries/controllers.mjs.map +0 -1
  316. package/dist/registries/custom-fields.js +0 -71
  317. package/dist/registries/custom-fields.js.map +0 -1
  318. package/dist/registries/custom-fields.mjs +0 -72
  319. package/dist/registries/custom-fields.mjs.map +0 -1
  320. package/dist/registries/hooks.js +0 -58
  321. package/dist/registries/hooks.js.map +0 -1
  322. package/dist/registries/hooks.mjs +0 -59
  323. package/dist/registries/hooks.mjs.map +0 -1
  324. package/dist/registries/middlewares.js +0 -60
  325. package/dist/registries/middlewares.js.map +0 -1
  326. package/dist/registries/middlewares.mjs +0 -61
  327. package/dist/registries/middlewares.mjs.map +0 -1
  328. package/dist/registries/models.js +0 -16
  329. package/dist/registries/models.js.map +0 -1
  330. package/dist/registries/models.mjs +0 -16
  331. package/dist/registries/models.mjs.map +0 -1
  332. package/dist/registries/modules.js +0 -39
  333. package/dist/registries/modules.js.map +0 -1
  334. package/dist/registries/modules.mjs +0 -40
  335. package/dist/registries/modules.mjs.map +0 -1
  336. package/dist/registries/namespace.js +0 -27
  337. package/dist/registries/namespace.js.map +0 -1
  338. package/dist/registries/namespace.mjs +0 -27
  339. package/dist/registries/namespace.mjs.map +0 -1
  340. package/dist/registries/plugins.js +0 -23
  341. package/dist/registries/plugins.js.map +0 -1
  342. package/dist/registries/plugins.mjs +0 -24
  343. package/dist/registries/plugins.mjs.map +0 -1
  344. package/dist/registries/policies.js +0 -108
  345. package/dist/registries/policies.js.map +0 -1
  346. package/dist/registries/policies.mjs +0 -109
  347. package/dist/registries/policies.mjs.map +0 -1
  348. package/dist/registries/sanitizers.js +0 -25
  349. package/dist/registries/sanitizers.js.map +0 -1
  350. package/dist/registries/sanitizers.mjs +0 -24
  351. package/dist/registries/sanitizers.mjs.map +0 -1
  352. package/dist/registries/services.js +0 -80
  353. package/dist/registries/services.js.map +0 -1
  354. package/dist/registries/services.mjs +0 -81
  355. package/dist/registries/services.mjs.map +0 -1
  356. package/dist/registries/validators.js +0 -25
  357. package/dist/registries/validators.js.map +0 -1
  358. package/dist/registries/validators.mjs +0 -24
  359. package/dist/registries/validators.mjs.map +0 -1
  360. package/dist/services/auth/index.js +0 -81
  361. package/dist/services/auth/index.js.map +0 -1
  362. package/dist/services/auth/index.mjs +0 -80
  363. package/dist/services/auth/index.mjs.map +0 -1
  364. package/dist/services/config.js +0 -47
  365. package/dist/services/config.js.map +0 -1
  366. package/dist/services/config.mjs +0 -47
  367. package/dist/services/config.mjs.map +0 -1
  368. package/dist/services/content-api/index.js +0 -85
  369. package/dist/services/content-api/index.js.map +0 -1
  370. package/dist/services/content-api/index.mjs +0 -84
  371. package/dist/services/content-api/index.mjs.map +0 -1
  372. package/dist/services/content-api/permissions/engine.js +0 -7
  373. package/dist/services/content-api/permissions/engine.js.map +0 -1
  374. package/dist/services/content-api/permissions/engine.mjs +0 -6
  375. package/dist/services/content-api/permissions/engine.mjs.map +0 -1
  376. package/dist/services/content-api/permissions/index.js +0 -87
  377. package/dist/services/content-api/permissions/index.js.map +0 -1
  378. package/dist/services/content-api/permissions/index.mjs +0 -86
  379. package/dist/services/content-api/permissions/index.mjs.map +0 -1
  380. package/dist/services/content-api/permissions/providers/action.js +0 -16
  381. package/dist/services/content-api/permissions/providers/action.js.map +0 -1
  382. package/dist/services/content-api/permissions/providers/action.mjs +0 -17
  383. package/dist/services/content-api/permissions/providers/action.mjs.map +0 -1
  384. package/dist/services/content-api/permissions/providers/condition.js +0 -16
  385. package/dist/services/content-api/permissions/providers/condition.js.map +0 -1
  386. package/dist/services/content-api/permissions/providers/condition.mjs +0 -17
  387. package/dist/services/content-api/permissions/providers/condition.mjs.map +0 -1
  388. package/dist/services/core-store.js +0 -107
  389. package/dist/services/core-store.js.map +0 -1
  390. package/dist/services/core-store.mjs +0 -107
  391. package/dist/services/core-store.mjs.map +0 -1
  392. package/dist/services/cron.js +0 -63
  393. package/dist/services/cron.js.map +0 -1
  394. package/dist/services/cron.mjs +0 -64
  395. package/dist/services/cron.mjs.map +0 -1
  396. package/dist/services/custom-fields.js +0 -10
  397. package/dist/services/custom-fields.js.map +0 -1
  398. package/dist/services/custom-fields.mjs +0 -11
  399. package/dist/services/custom-fields.mjs.map +0 -1
  400. package/dist/services/document-service/attributes/index.js +0 -22
  401. package/dist/services/document-service/attributes/index.js.map +0 -1
  402. package/dist/services/document-service/attributes/index.mjs +0 -22
  403. package/dist/services/document-service/attributes/index.mjs.map +0 -1
  404. package/dist/services/document-service/attributes/transforms.js +0 -20
  405. package/dist/services/document-service/attributes/transforms.js.map +0 -1
  406. package/dist/services/document-service/attributes/transforms.mjs +0 -19
  407. package/dist/services/document-service/attributes/transforms.mjs.map +0 -1
  408. package/dist/services/document-service/common.js +0 -7
  409. package/dist/services/document-service/common.js.map +0 -1
  410. package/dist/services/document-service/common.mjs +0 -7
  411. package/dist/services/document-service/common.mjs.map +0 -1
  412. package/dist/services/document-service/components.js +0 -288
  413. package/dist/services/document-service/components.js.map +0 -1
  414. package/dist/services/document-service/components.mjs +0 -286
  415. package/dist/services/document-service/components.mjs.map +0 -1
  416. package/dist/services/document-service/draft-and-publish.js +0 -69
  417. package/dist/services/document-service/draft-and-publish.js.map +0 -1
  418. package/dist/services/document-service/draft-and-publish.mjs +0 -69
  419. package/dist/services/document-service/draft-and-publish.mjs.map +0 -1
  420. package/dist/services/document-service/entries.js +0 -96
  421. package/dist/services/document-service/entries.js.map +0 -1
  422. package/dist/services/document-service/entries.mjs +0 -96
  423. package/dist/services/document-service/entries.mjs.map +0 -1
  424. package/dist/services/document-service/events.js +0 -47
  425. package/dist/services/document-service/events.js.map +0 -1
  426. package/dist/services/document-service/events.mjs +0 -47
  427. package/dist/services/document-service/events.mjs.map +0 -1
  428. package/dist/services/document-service/index.js +0 -35
  429. package/dist/services/document-service/index.js.map +0 -1
  430. package/dist/services/document-service/index.mjs +0 -35
  431. package/dist/services/document-service/index.mjs.map +0 -1
  432. package/dist/services/document-service/internationalization.js +0 -63
  433. package/dist/services/document-service/internationalization.js.map +0 -1
  434. package/dist/services/document-service/internationalization.mjs +0 -63
  435. package/dist/services/document-service/internationalization.mjs.map +0 -1
  436. package/dist/services/document-service/middlewares/errors.js +0 -25
  437. package/dist/services/document-service/middlewares/errors.js.map +0 -1
  438. package/dist/services/document-service/middlewares/errors.mjs +0 -25
  439. package/dist/services/document-service/middlewares/errors.mjs.map +0 -1
  440. package/dist/services/document-service/middlewares/middleware-manager.js +0 -49
  441. package/dist/services/document-service/middlewares/middleware-manager.js.map +0 -1
  442. package/dist/services/document-service/middlewares/middleware-manager.mjs +0 -49
  443. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +0 -1
  444. package/dist/services/document-service/params.js +0 -8
  445. package/dist/services/document-service/params.js.map +0 -1
  446. package/dist/services/document-service/params.mjs +0 -8
  447. package/dist/services/document-service/params.mjs.map +0 -1
  448. package/dist/services/document-service/repository.js +0 -314
  449. package/dist/services/document-service/repository.js.map +0 -1
  450. package/dist/services/document-service/repository.mjs +0 -314
  451. package/dist/services/document-service/repository.mjs.map +0 -1
  452. package/dist/services/document-service/transform/data.js +0 -15
  453. package/dist/services/document-service/transform/data.js.map +0 -1
  454. package/dist/services/document-service/transform/data.mjs +0 -15
  455. package/dist/services/document-service/transform/data.mjs.map +0 -1
  456. package/dist/services/document-service/transform/fields.js +0 -24
  457. package/dist/services/document-service/transform/fields.js.map +0 -1
  458. package/dist/services/document-service/transform/fields.mjs +0 -24
  459. package/dist/services/document-service/transform/fields.mjs.map +0 -1
  460. package/dist/services/document-service/transform/id-map.js +0 -78
  461. package/dist/services/document-service/transform/id-map.js.map +0 -1
  462. package/dist/services/document-service/transform/id-map.mjs +0 -78
  463. package/dist/services/document-service/transform/id-map.mjs.map +0 -1
  464. package/dist/services/document-service/transform/id-transform.js +0 -33
  465. package/dist/services/document-service/transform/id-transform.js.map +0 -1
  466. package/dist/services/document-service/transform/id-transform.mjs +0 -33
  467. package/dist/services/document-service/transform/id-transform.mjs.map +0 -1
  468. package/dist/services/document-service/transform/populate.js +0 -21
  469. package/dist/services/document-service/transform/populate.js.map +0 -1
  470. package/dist/services/document-service/transform/populate.mjs +0 -21
  471. package/dist/services/document-service/transform/populate.mjs.map +0 -1
  472. package/dist/services/document-service/transform/query.js +0 -9
  473. package/dist/services/document-service/transform/query.js.map +0 -1
  474. package/dist/services/document-service/transform/query.mjs +0 -9
  475. package/dist/services/document-service/transform/query.mjs.map +0 -1
  476. package/dist/services/document-service/transform/relations/extract/data-ids.js +0 -57
  477. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +0 -1
  478. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +0 -57
  479. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +0 -1
  480. package/dist/services/document-service/transform/relations/transform/data-ids.js +0 -76
  481. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +0 -1
  482. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +0 -76
  483. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +0 -1
  484. package/dist/services/document-service/transform/relations/transform/default-locale.js +0 -32
  485. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +0 -1
  486. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +0 -32
  487. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +0 -1
  488. package/dist/services/document-service/transform/relations/utils/dp.js +0 -30
  489. package/dist/services/document-service/transform/relations/utils/dp.js.map +0 -1
  490. package/dist/services/document-service/transform/relations/utils/dp.mjs +0 -30
  491. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +0 -1
  492. package/dist/services/document-service/transform/relations/utils/i18n.js +0 -25
  493. package/dist/services/document-service/transform/relations/utils/i18n.js.map +0 -1
  494. package/dist/services/document-service/transform/relations/utils/i18n.mjs +0 -25
  495. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +0 -1
  496. package/dist/services/document-service/transform/relations/utils/map-relation.js +0 -91
  497. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +0 -1
  498. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +0 -91
  499. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +0 -1
  500. package/dist/services/document-service/utils/populate.js +0 -47
  501. package/dist/services/document-service/utils/populate.js.map +0 -1
  502. package/dist/services/document-service/utils/populate.mjs +0 -47
  503. package/dist/services/document-service/utils/populate.mjs.map +0 -1
  504. package/dist/services/document-service/utils/unidirectional-relations.js +0 -58
  505. package/dist/services/document-service/utils/unidirectional-relations.js.map +0 -1
  506. package/dist/services/document-service/utils/unidirectional-relations.mjs +0 -58
  507. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +0 -1
  508. package/dist/services/entity-service/index.js +0 -169
  509. package/dist/services/entity-service/index.js.map +0 -1
  510. package/dist/services/entity-service/index.mjs +0 -167
  511. package/dist/services/entity-service/index.mjs.map +0 -1
  512. package/dist/services/entity-validator/blocks-validator.js +0 -128
  513. package/dist/services/entity-validator/blocks-validator.js.map +0 -1
  514. package/dist/services/entity-validator/blocks-validator.mjs +0 -128
  515. package/dist/services/entity-validator/blocks-validator.mjs.map +0 -1
  516. package/dist/services/entity-validator/index.js +0 -385
  517. package/dist/services/entity-validator/index.js.map +0 -1
  518. package/dist/services/entity-validator/index.mjs +0 -384
  519. package/dist/services/entity-validator/index.mjs.map +0 -1
  520. package/dist/services/entity-validator/validators.js +0 -241
  521. package/dist/services/entity-validator/validators.js.map +0 -1
  522. package/dist/services/entity-validator/validators.mjs +0 -239
  523. package/dist/services/entity-validator/validators.mjs.map +0 -1
  524. package/dist/services/errors.js +0 -76
  525. package/dist/services/errors.js.map +0 -1
  526. package/dist/services/errors.mjs +0 -74
  527. package/dist/services/errors.mjs.map +0 -1
  528. package/dist/services/event-hub.js +0 -72
  529. package/dist/services/event-hub.js.map +0 -1
  530. package/dist/services/event-hub.mjs +0 -73
  531. package/dist/services/event-hub.mjs.map +0 -1
  532. package/dist/services/features.js +0 -17
  533. package/dist/services/features.js.map +0 -1
  534. package/dist/services/features.mjs +0 -17
  535. package/dist/services/features.mjs.map +0 -1
  536. package/dist/services/fs.js +0 -51
  537. package/dist/services/fs.js.map +0 -1
  538. package/dist/services/fs.mjs +0 -49
  539. package/dist/services/fs.mjs.map +0 -1
  540. package/dist/services/metrics/admin-user-hash.js +0 -14
  541. package/dist/services/metrics/admin-user-hash.js.map +0 -1
  542. package/dist/services/metrics/admin-user-hash.mjs +0 -12
  543. package/dist/services/metrics/admin-user-hash.mjs.map +0 -1
  544. package/dist/services/metrics/index.js +0 -45
  545. package/dist/services/metrics/index.js.map +0 -1
  546. package/dist/services/metrics/index.mjs +0 -46
  547. package/dist/services/metrics/index.mjs.map +0 -1
  548. package/dist/services/metrics/is-truthy.js +0 -9
  549. package/dist/services/metrics/is-truthy.js.map +0 -1
  550. package/dist/services/metrics/is-truthy.mjs +0 -8
  551. package/dist/services/metrics/is-truthy.mjs.map +0 -1
  552. package/dist/services/metrics/middleware.js +0 -25
  553. package/dist/services/metrics/middleware.js.map +0 -1
  554. package/dist/services/metrics/middleware.mjs +0 -26
  555. package/dist/services/metrics/middleware.mjs.map +0 -1
  556. package/dist/services/metrics/rate-limiter.js +0 -21
  557. package/dist/services/metrics/rate-limiter.js.map +0 -1
  558. package/dist/services/metrics/rate-limiter.mjs +0 -22
  559. package/dist/services/metrics/rate-limiter.mjs.map +0 -1
  560. package/dist/services/metrics/sender.js +0 -76
  561. package/dist/services/metrics/sender.js.map +0 -1
  562. package/dist/services/metrics/sender.mjs +0 -70
  563. package/dist/services/metrics/sender.mjs.map +0 -1
  564. package/dist/services/query-params.js +0 -12
  565. package/dist/services/query-params.js.map +0 -1
  566. package/dist/services/query-params.mjs +0 -13
  567. package/dist/services/query-params.mjs.map +0 -1
  568. package/dist/services/reloader.js +0 -36
  569. package/dist/services/reloader.js.map +0 -1
  570. package/dist/services/reloader.mjs +0 -36
  571. package/dist/services/reloader.mjs.map +0 -1
  572. package/dist/services/request-context.js +0 -13
  573. package/dist/services/request-context.js.map +0 -1
  574. package/dist/services/request-context.mjs +0 -14
  575. package/dist/services/request-context.mjs.map +0 -1
  576. package/dist/services/server/admin-api.js +0 -13
  577. package/dist/services/server/admin-api.js.map +0 -1
  578. package/dist/services/server/admin-api.mjs +0 -13
  579. package/dist/services/server/admin-api.mjs.map +0 -1
  580. package/dist/services/server/api.js +0 -30
  581. package/dist/services/server/api.js.map +0 -1
  582. package/dist/services/server/api.mjs +0 -28
  583. package/dist/services/server/api.mjs.map +0 -1
  584. package/dist/services/server/compose-endpoint.js +0 -117
  585. package/dist/services/server/compose-endpoint.js.map +0 -1
  586. package/dist/services/server/compose-endpoint.mjs +0 -116
  587. package/dist/services/server/compose-endpoint.mjs.map +0 -1
  588. package/dist/services/server/content-api.js +0 -12
  589. package/dist/services/server/content-api.js.map +0 -1
  590. package/dist/services/server/content-api.mjs +0 -12
  591. package/dist/services/server/content-api.mjs.map +0 -1
  592. package/dist/services/server/http-server.js +0 -50
  593. package/dist/services/server/http-server.js.map +0 -1
  594. package/dist/services/server/http-server.mjs +0 -48
  595. package/dist/services/server/http-server.mjs.map +0 -1
  596. package/dist/services/server/index.js +0 -87
  597. package/dist/services/server/index.js.map +0 -1
  598. package/dist/services/server/index.mjs +0 -85
  599. package/dist/services/server/index.mjs.map +0 -1
  600. package/dist/services/server/koa.js +0 -52
  601. package/dist/services/server/koa.js.map +0 -1
  602. package/dist/services/server/koa.mjs +0 -48
  603. package/dist/services/server/koa.mjs.map +0 -1
  604. package/dist/services/server/middleware.js +0 -92
  605. package/dist/services/server/middleware.js.map +0 -1
  606. package/dist/services/server/middleware.mjs +0 -90
  607. package/dist/services/server/middleware.mjs.map +0 -1
  608. package/dist/services/server/policy.js +0 -20
  609. package/dist/services/server/policy.js.map +0 -1
  610. package/dist/services/server/policy.mjs +0 -20
  611. package/dist/services/server/policy.mjs.map +0 -1
  612. package/dist/services/server/register-middlewares.js +0 -72
  613. package/dist/services/server/register-middlewares.js.map +0 -1
  614. package/dist/services/server/register-middlewares.mjs +0 -73
  615. package/dist/services/server/register-middlewares.mjs.map +0 -1
  616. package/dist/services/server/register-routes.js +0 -76
  617. package/dist/services/server/register-routes.js.map +0 -1
  618. package/dist/services/server/register-routes.mjs +0 -75
  619. package/dist/services/server/register-routes.mjs.map +0 -1
  620. package/dist/services/server/routing.js +0 -91
  621. package/dist/services/server/routing.js.map +0 -1
  622. package/dist/services/server/routing.mjs +0 -89
  623. package/dist/services/server/routing.mjs.map +0 -1
  624. package/dist/services/utils/dynamic-zones.js +0 -17
  625. package/dist/services/utils/dynamic-zones.js.map +0 -1
  626. package/dist/services/utils/dynamic-zones.mjs +0 -18
  627. package/dist/services/utils/dynamic-zones.mjs.map +0 -1
  628. package/dist/services/webhook-runner.js +0 -133
  629. package/dist/services/webhook-runner.js.map +0 -1
  630. package/dist/services/webhook-runner.mjs +0 -131
  631. package/dist/services/webhook-runner.mjs.map +0 -1
  632. package/dist/services/webhook-store.js +0 -110
  633. package/dist/services/webhook-store.js.map +0 -1
  634. package/dist/services/webhook-store.mjs +0 -110
  635. package/dist/services/webhook-store.mjs.map +0 -1
  636. package/dist/services/worker-queue.js +0 -56
  637. package/dist/services/worker-queue.js.map +0 -1
  638. package/dist/services/worker-queue.mjs +0 -55
  639. package/dist/services/worker-queue.mjs.map +0 -1
  640. package/dist/utils/convert-custom-field-type.js +0 -24
  641. package/dist/utils/convert-custom-field-type.js.map +0 -1
  642. package/dist/utils/convert-custom-field-type.mjs +0 -24
  643. package/dist/utils/convert-custom-field-type.mjs.map +0 -1
  644. package/dist/utils/cron.js +0 -38
  645. package/dist/utils/cron.js.map +0 -1
  646. package/dist/utils/cron.mjs +0 -38
  647. package/dist/utils/cron.mjs.map +0 -1
  648. package/dist/utils/fetch.js +0 -21
  649. package/dist/utils/fetch.js.map +0 -1
  650. package/dist/utils/fetch.mjs +0 -21
  651. package/dist/utils/fetch.mjs.map +0 -1
  652. package/dist/utils/filepath-to-prop-path.js +0 -33
  653. package/dist/utils/filepath-to-prop-path.js.map +0 -1
  654. package/dist/utils/filepath-to-prop-path.mjs +0 -30
  655. package/dist/utils/filepath-to-prop-path.mjs.map +0 -1
  656. package/dist/utils/is-initialized.js +0 -16
  657. package/dist/utils/is-initialized.js.map +0 -1
  658. package/dist/utils/is-initialized.mjs +0 -16
  659. package/dist/utils/is-initialized.mjs.map +0 -1
  660. package/dist/utils/lifecycles.js +0 -9
  661. package/dist/utils/lifecycles.js.map +0 -1
  662. package/dist/utils/lifecycles.mjs +0 -9
  663. package/dist/utils/lifecycles.mjs.map +0 -1
  664. package/dist/utils/load-config-file.js +0 -45
  665. package/dist/utils/load-config-file.js.map +0 -1
  666. package/dist/utils/load-config-file.mjs +0 -42
  667. package/dist/utils/load-config-file.mjs.map +0 -1
  668. package/dist/utils/load-files.js +0 -39
  669. package/dist/utils/load-files.js.map +0 -1
  670. package/dist/utils/load-files.mjs +0 -35
  671. package/dist/utils/load-files.mjs.map +0 -1
  672. package/dist/utils/open-browser.js +0 -11
  673. package/dist/utils/open-browser.js.map +0 -1
  674. package/dist/utils/open-browser.mjs +0 -9
  675. package/dist/utils/open-browser.mjs.map +0 -1
  676. package/dist/utils/resolve-working-dirs.js +0 -13
  677. package/dist/utils/resolve-working-dirs.js.map +0 -1
  678. package/dist/utils/resolve-working-dirs.mjs +0 -11
  679. package/dist/utils/resolve-working-dirs.mjs.map +0 -1
  680. package/dist/utils/signals.js +0 -17
  681. package/dist/utils/signals.js.map +0 -1
  682. package/dist/utils/signals.mjs +0 -17
  683. package/dist/utils/signals.mjs.map +0 -1
  684. package/dist/utils/startup-logger.js +0 -81
  685. package/dist/utils/startup-logger.js.map +0 -1
  686. package/dist/utils/startup-logger.mjs +0 -77
  687. package/dist/utils/startup-logger.mjs.map +0 -1
  688. package/dist/utils/transform-content-types-to-models.js +0 -288
  689. package/dist/utils/transform-content-types-to-models.js.map +0 -1
  690. package/dist/utils/transform-content-types-to-models.mjs +0 -285
  691. package/dist/utils/transform-content-types-to-models.mjs.map +0 -1
  692. package/dist/utils/update-notifier/index.js +0 -85
  693. package/dist/utils/update-notifier/index.js.map +0 -1
  694. package/dist/utils/update-notifier/index.mjs +0 -78
  695. package/dist/utils/update-notifier/index.mjs.map +0 -1
@@ -1,91 +0,0 @@
1
- import { curry, isNil, isObject } from "lodash/fp";
2
- import { async, traverseEntity } from "@strapi/utils";
3
- const isNumeric = (value) => {
4
- if (Array.isArray(value))
5
- return false;
6
- const parsed = parseInt(value, 10);
7
- return !Number.isNaN(parsed);
8
- };
9
- const toArray = (value) => {
10
- if (isNil(value))
11
- return value;
12
- if (Array.isArray(value))
13
- return value;
14
- return [value];
15
- };
16
- const mapRelation = async (callback, rel, isRecursive = false) => {
17
- let relation = rel;
18
- const wrapInSet = (value) => {
19
- if (isRecursive) {
20
- return value;
21
- }
22
- return { set: toArray(value) };
23
- };
24
- if (isNil(relation)) {
25
- return callback(relation);
26
- }
27
- if (Array.isArray(relation)) {
28
- return async.map(relation, (r) => mapRelation(callback, r, true)).then((result) => result.flat().filter(Boolean)).then(wrapInSet);
29
- }
30
- if (isObject(relation)) {
31
- if ("id" in relation || "documentId" in relation) {
32
- const result = await callback(relation);
33
- return wrapInSet(result);
34
- }
35
- if (!relation.set && !relation.disconnect && !relation.connect) {
36
- return callback(relation);
37
- }
38
- if (relation.set) {
39
- const set = await mapRelation(callback, relation.set, true);
40
- relation = { ...relation, set: toArray(set) };
41
- }
42
- if (relation.disconnect) {
43
- const disconnect = await mapRelation(callback, relation.disconnect, true);
44
- relation = { ...relation, disconnect: toArray(disconnect) };
45
- }
46
- if (relation.connect) {
47
- const connect = await mapRelation(callback, relation.connect, true);
48
- relation = { ...relation, connect: toArray(connect) };
49
- }
50
- return relation;
51
- }
52
- if (isNumeric(relation)) {
53
- const result = await callback({ id: relation });
54
- return wrapInSet(result);
55
- }
56
- if (typeof relation === "string") {
57
- const result = await callback({ documentId: relation });
58
- return wrapInSet(result);
59
- }
60
- return callback(relation);
61
- };
62
- const traverseEntityRelations = async (visitor, options, data) => {
63
- return traverseEntity(
64
- async (options2, utils) => {
65
- const { attribute } = options2;
66
- if (!attribute) {
67
- return;
68
- }
69
- if (attribute.type !== "relation") {
70
- return;
71
- }
72
- if (attribute.useJoinTable === false) {
73
- return;
74
- }
75
- const target = attribute.target;
76
- if (!target) {
77
- return;
78
- }
79
- return visitor(options2, utils);
80
- },
81
- options,
82
- data
83
- );
84
- };
85
- const mapRelationCurried = curry(mapRelation);
86
- const traverseEntityRelationsCurried = curry(traverseEntityRelations);
87
- export {
88
- mapRelationCurried as mapRelation,
89
- traverseEntityRelationsCurried as traverseEntityRelations
90
- };
91
- //# sourceMappingURL=map-relation.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map-relation.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/map-relation.ts"],"sourcesContent":["/* eslint-disable node/no-callback-literal */\nimport { isObject, curry, isNil } from 'lodash/fp';\n\nimport type { UID } from '@strapi/types';\nimport { traverseEntity, async } from '@strapi/utils';\n\nimport { Relation } from './types';\n\nconst isNumeric = (value: any): value is number => {\n if (Array.isArray(value)) return false; // Handle [1, 'docId'] case\n const parsed = parseInt(value, 10);\n return !Number.isNaN(parsed);\n};\n\nconst toArray = (value: any) => {\n // Keep value as it is if it's a nullish value\n if (isNil(value)) return value;\n if (Array.isArray(value)) return value;\n\n return [value];\n};\n\n/**\n * There are multiple ways to create Strapi relations.\n * This is a utility to traverse and transform relation data\n *\n *\n * For consistency and ease of use, the response will always be an object with the following shape:\n * { set: [{...}], connect: [{...}], disconnect: [{...}] }\n *\n * @example\n * transformRelationData({\n * onLongHand: (relation) => {\n * // Change the id of the relation\n * return { id: 'other' };\n * },\n * }, relation)\n */\nconst mapRelation = async (\n callback: (relation: any) => any,\n rel: Relation,\n isRecursive = false\n): Promise<Relation> => {\n let relation: Relation = rel;\n\n const wrapInSet = (value: any) => {\n // Ignore wrapping if it's a recursive call\n if (isRecursive) {\n return value;\n }\n return { set: toArray(value) };\n };\n\n // undefined | null\n if (isNil(relation)) {\n return callback(relation);\n }\n\n // LongHand[] | ShortHand[]\n if (Array.isArray(relation)) {\n return async\n .map(relation, (r: Relation) => mapRelation(callback, r, true))\n .then((result: any) => result.flat().filter(Boolean))\n .then(wrapInSet);\n }\n\n // LongHand\n if (isObject(relation)) {\n // { id: 1 } || { documentId: 1 }\n if ('id' in relation || 'documentId' in relation) {\n const result = await callback(relation);\n return wrapInSet(result);\n }\n\n // If not connecting anything, return default visitor\n if (!relation.set && !relation.disconnect && !relation.connect) {\n return callback(relation);\n }\n\n // { set }\n if (relation.set) {\n const set: any = await mapRelation(callback, relation.set, true);\n relation = { ...relation, set: toArray(set) };\n }\n\n // { disconnect}\n if (relation.disconnect) {\n const disconnect: any = await mapRelation(callback, relation.disconnect, true);\n relation = { ...relation, disconnect: toArray(disconnect) };\n }\n\n // { connect }\n if (relation.connect) {\n // Transform the relation to connect\n const connect: any = await mapRelation(callback, relation.connect, true);\n relation = { ...relation, connect: toArray(connect) };\n }\n\n return relation;\n }\n\n // ShortHand\n if (isNumeric(relation)) {\n const result = await callback({ id: relation });\n return wrapInSet(result);\n }\n\n if (typeof relation === 'string') {\n const result = await callback({ documentId: relation });\n return wrapInSet(result);\n }\n\n // Anything else\n return callback(relation);\n};\n\ntype TraverseEntity = Parameters<typeof traverseEntity>;\n\n/**\n * Utility function, same as `traverseEntity` but only for relations.\n */\nconst traverseEntityRelations = async (\n visitor: TraverseEntity[0],\n options: TraverseEntity[1],\n data: TraverseEntity[2]\n) => {\n return traverseEntity(\n async (options, utils) => {\n const { attribute } = options;\n\n if (!attribute) {\n return;\n }\n\n if (attribute.type !== 'relation') {\n return;\n }\n\n // TODO: Handle join columns\n if (attribute.useJoinTable === false) {\n return;\n }\n\n // TODO: Handle morph relations (they have multiple targets)\n const target = attribute.target as UID.Schema | undefined;\n if (!target) {\n return;\n }\n\n return visitor(options, utils);\n },\n options,\n data\n );\n};\n\nconst mapRelationCurried = curry(mapRelation);\nconst traverseEntityRelationsCurried = curry(traverseEntityRelations);\n\nexport {\n mapRelationCurried as mapRelation,\n traverseEntityRelationsCurried as traverseEntityRelations,\n};\n"],"names":["options"],"mappings":";;AAQA,MAAM,YAAY,CAAC,UAAgC;AAC7C,MAAA,MAAM,QAAQ,KAAK;AAAU,WAAA;AAC3B,QAAA,SAAS,SAAS,OAAO,EAAE;AAC1B,SAAA,CAAC,OAAO,MAAM,MAAM;AAC7B;AAEA,MAAM,UAAU,CAAC,UAAe;AAE9B,MAAI,MAAM,KAAK;AAAU,WAAA;AACrB,MAAA,MAAM,QAAQ,KAAK;AAAU,WAAA;AAEjC,SAAO,CAAC,KAAK;AACf;AAkBA,MAAM,cAAc,OAClB,UACA,KACA,cAAc,UACQ;AACtB,MAAI,WAAqB;AAEnB,QAAA,YAAY,CAAC,UAAe;AAEhC,QAAI,aAAa;AACR,aAAA;AAAA,IACT;AACA,WAAO,EAAE,KAAK,QAAQ,KAAK,EAAE;AAAA,EAAA;AAI3B,MAAA,MAAM,QAAQ,GAAG;AACnB,WAAO,SAAS,QAAQ;AAAA,EAC1B;AAGI,MAAA,MAAM,QAAQ,QAAQ,GAAG;AACpB,WAAA,MACJ,IAAI,UAAU,CAAC,MAAgB,YAAY,UAAU,GAAG,IAAI,CAAC,EAC7D,KAAK,CAAC,WAAgB,OAAO,OAAO,OAAO,OAAO,CAAC,EACnD,KAAK,SAAS;AAAA,EACnB;AAGI,MAAA,SAAS,QAAQ,GAAG;AAElB,QAAA,QAAQ,YAAY,gBAAgB,UAAU;AAC1C,YAAA,SAAS,MAAM,SAAS,QAAQ;AACtC,aAAO,UAAU,MAAM;AAAA,IACzB;AAGI,QAAA,CAAC,SAAS,OAAO,CAAC,SAAS,cAAc,CAAC,SAAS,SAAS;AAC9D,aAAO,SAAS,QAAQ;AAAA,IAC1B;AAGA,QAAI,SAAS,KAAK;AAChB,YAAM,MAAW,MAAM,YAAY,UAAU,SAAS,KAAK,IAAI;AAC/D,iBAAW,EAAE,GAAG,UAAU,KAAK,QAAQ,GAAG;IAC5C;AAGA,QAAI,SAAS,YAAY;AACvB,YAAM,aAAkB,MAAM,YAAY,UAAU,SAAS,YAAY,IAAI;AAC7E,iBAAW,EAAE,GAAG,UAAU,YAAY,QAAQ,UAAU;IAC1D;AAGA,QAAI,SAAS,SAAS;AAEpB,YAAM,UAAe,MAAM,YAAY,UAAU,SAAS,SAAS,IAAI;AACvE,iBAAW,EAAE,GAAG,UAAU,SAAS,QAAQ,OAAO;IACpD;AAEO,WAAA;AAAA,EACT;AAGI,MAAA,UAAU,QAAQ,GAAG;AACvB,UAAM,SAAS,MAAM,SAAS,EAAE,IAAI,SAAU,CAAA;AAC9C,WAAO,UAAU,MAAM;AAAA,EACzB;AAEI,MAAA,OAAO,aAAa,UAAU;AAChC,UAAM,SAAS,MAAM,SAAS,EAAE,YAAY,SAAU,CAAA;AACtD,WAAO,UAAU,MAAM;AAAA,EACzB;AAGA,SAAO,SAAS,QAAQ;AAC1B;AAOA,MAAM,0BAA0B,OAC9B,SACA,SACA,SACG;AACI,SAAA;AAAA,IACL,OAAOA,UAAS,UAAU;AAClB,YAAA,EAAE,UAAcA,IAAAA;AAEtB,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AAEI,UAAA,UAAU,SAAS,YAAY;AACjC;AAAA,MACF;AAGI,UAAA,UAAU,iBAAiB,OAAO;AACpC;AAAA,MACF;AAGA,YAAM,SAAS,UAAU;AACzB,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAEO,aAAA,QAAQA,UAAS,KAAK;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEM,MAAA,qBAAqB,MAAM,WAAW;AACtC,MAAA,iCAAiC,MAAM,uBAAuB;"}
@@ -1,47 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const strapiUtils = require("@strapi/utils");
4
- const { CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } = strapiUtils.contentTypes.constants;
5
- const getDeepPopulate = (uid, opts = {}) => {
6
- const model = strapi.getModel(uid);
7
- const attributes = Object.entries(model.attributes);
8
- return attributes.reduce((acc, [attributeName, attribute]) => {
9
- switch (attribute.type) {
10
- case "relation": {
11
- const isMorphRelation = attribute.relation.toLowerCase().startsWith("morph");
12
- if (isMorphRelation) {
13
- break;
14
- }
15
- const isVisible = strapiUtils.contentTypes.isVisibleAttribute(model, attributeName);
16
- const isCreatorField = [CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE].includes(attributeName);
17
- if (isVisible || isCreatorField) {
18
- acc[attributeName] = { select: opts.relationalFields };
19
- }
20
- break;
21
- }
22
- case "media": {
23
- acc[attributeName] = { select: ["id"] };
24
- break;
25
- }
26
- case "component": {
27
- const populate = getDeepPopulate(attribute.component, opts);
28
- acc[attributeName] = { populate };
29
- break;
30
- }
31
- case "dynamiczone": {
32
- const populatedComponents = (attribute.components || []).reduce(
33
- (acc2, componentUID) => {
34
- acc2[componentUID] = { populate: getDeepPopulate(componentUID, opts) };
35
- return acc2;
36
- },
37
- {}
38
- );
39
- acc[attributeName] = { on: populatedComponents };
40
- break;
41
- }
42
- }
43
- return acc;
44
- }, {});
45
- };
46
- exports.getDeepPopulate = getDeepPopulate;
47
- //# sourceMappingURL=populate.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"populate.js","sources":["../../../../src/services/document-service/utils/populate.ts"],"sourcesContent":["import { UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ninterface Options {\n /**\n * Fields to select when populating relations\n */\n relationalFields?: string[];\n}\n\nconst { CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } = contentTypes.constants;\n\n// We want to build a populate object based on the schema\nexport const getDeepPopulate = (uid: UID.Schema, opts: Options = {}) => {\n const model = strapi.getModel(uid);\n const attributes = Object.entries(model.attributes);\n\n return attributes.reduce((acc: any, [attributeName, attribute]) => {\n switch (attribute.type) {\n case 'relation': {\n // TODO: Support polymorphic relations\n const isMorphRelation = attribute.relation.toLowerCase().startsWith('morph');\n if (isMorphRelation) {\n break;\n }\n\n // Ignore not visible fields other than createdBy and updatedBy\n const isVisible = contentTypes.isVisibleAttribute(model, attributeName);\n const isCreatorField = [CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE].includes(attributeName);\n\n if (isVisible || isCreatorField) {\n acc[attributeName] = { select: opts.relationalFields };\n }\n\n break;\n }\n\n case 'media': {\n acc[attributeName] = { select: ['id'] };\n break;\n }\n\n case 'component': {\n const populate = getDeepPopulate(attribute.component, opts);\n acc[attributeName] = { populate };\n break;\n }\n\n case 'dynamiczone': {\n // Use fragments to populate the dynamic zone components\n const populatedComponents = (attribute.components || []).reduce(\n (acc: any, componentUID: UID.Component) => {\n acc[componentUID] = { populate: getDeepPopulate(componentUID, opts) };\n return acc;\n },\n {}\n );\n\n acc[attributeName] = { on: populatedComponents };\n break;\n }\n default:\n break;\n }\n\n return acc;\n }, {});\n};\n"],"names":["contentTypes","acc"],"mappings":";;;AAUA,MAAM,EAAE,sBAAsB,yBAAyBA,YAAAA,aAAa;AAG7D,MAAM,kBAAkB,CAAC,KAAiB,OAAgB,OAAO;AAChE,QAAA,QAAQ,OAAO,SAAS,GAAG;AACjC,QAAM,aAAa,OAAO,QAAQ,MAAM,UAAU;AAElD,SAAO,WAAW,OAAO,CAAC,KAAU,CAAC,eAAe,SAAS,MAAM;AACjE,YAAQ,UAAU,MAAM;AAAA,MACtB,KAAK,YAAY;AAEf,cAAM,kBAAkB,UAAU,SAAS,YAAY,EAAE,WAAW,OAAO;AAC3E,YAAI,iBAAiB;AACnB;AAAA,QACF;AAGA,cAAM,YAAYA,YAAA,aAAa,mBAAmB,OAAO,aAAa;AACtE,cAAM,iBAAiB,CAAC,sBAAsB,oBAAoB,EAAE,SAAS,aAAa;AAE1F,YAAI,aAAa,gBAAgB;AAC/B,cAAI,aAAa,IAAI,EAAE,QAAQ,KAAK,iBAAiB;AAAA,QACvD;AAEA;AAAA,MACF;AAAA,MAEA,KAAK,SAAS;AACZ,YAAI,aAAa,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AACtC;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,cAAM,WAAW,gBAAgB,UAAU,WAAW,IAAI;AACtD,YAAA,aAAa,IAAI,EAAE;AACvB;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAElB,cAAM,uBAAuB,UAAU,cAAc,CAAI,GAAA;AAAA,UACvD,CAACC,MAAU,iBAAgC;AACzCA,iBAAI,YAAY,IAAI,EAAE,UAAU,gBAAgB,cAAc,IAAI;AAC3DA,mBAAAA;AAAAA,UACT;AAAA,UACA,CAAC;AAAA,QAAA;AAGH,YAAI,aAAa,IAAI,EAAE,IAAI,oBAAoB;AAC/C;AAAA,MACF;AAAA,IAGF;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;;"}
@@ -1,47 +0,0 @@
1
- import { contentTypes } from "@strapi/utils";
2
- const { CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } = contentTypes.constants;
3
- const getDeepPopulate = (uid, opts = {}) => {
4
- const model = strapi.getModel(uid);
5
- const attributes = Object.entries(model.attributes);
6
- return attributes.reduce((acc, [attributeName, attribute]) => {
7
- switch (attribute.type) {
8
- case "relation": {
9
- const isMorphRelation = attribute.relation.toLowerCase().startsWith("morph");
10
- if (isMorphRelation) {
11
- break;
12
- }
13
- const isVisible = contentTypes.isVisibleAttribute(model, attributeName);
14
- const isCreatorField = [CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE].includes(attributeName);
15
- if (isVisible || isCreatorField) {
16
- acc[attributeName] = { select: opts.relationalFields };
17
- }
18
- break;
19
- }
20
- case "media": {
21
- acc[attributeName] = { select: ["id"] };
22
- break;
23
- }
24
- case "component": {
25
- const populate = getDeepPopulate(attribute.component, opts);
26
- acc[attributeName] = { populate };
27
- break;
28
- }
29
- case "dynamiczone": {
30
- const populatedComponents = (attribute.components || []).reduce(
31
- (acc2, componentUID) => {
32
- acc2[componentUID] = { populate: getDeepPopulate(componentUID, opts) };
33
- return acc2;
34
- },
35
- {}
36
- );
37
- acc[attributeName] = { on: populatedComponents };
38
- break;
39
- }
40
- }
41
- return acc;
42
- }, {});
43
- };
44
- export {
45
- getDeepPopulate
46
- };
47
- //# sourceMappingURL=populate.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"populate.mjs","sources":["../../../../src/services/document-service/utils/populate.ts"],"sourcesContent":["import { UID } from '@strapi/types';\nimport { contentTypes } from '@strapi/utils';\n\ninterface Options {\n /**\n * Fields to select when populating relations\n */\n relationalFields?: string[];\n}\n\nconst { CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE } = contentTypes.constants;\n\n// We want to build a populate object based on the schema\nexport const getDeepPopulate = (uid: UID.Schema, opts: Options = {}) => {\n const model = strapi.getModel(uid);\n const attributes = Object.entries(model.attributes);\n\n return attributes.reduce((acc: any, [attributeName, attribute]) => {\n switch (attribute.type) {\n case 'relation': {\n // TODO: Support polymorphic relations\n const isMorphRelation = attribute.relation.toLowerCase().startsWith('morph');\n if (isMorphRelation) {\n break;\n }\n\n // Ignore not visible fields other than createdBy and updatedBy\n const isVisible = contentTypes.isVisibleAttribute(model, attributeName);\n const isCreatorField = [CREATED_BY_ATTRIBUTE, UPDATED_BY_ATTRIBUTE].includes(attributeName);\n\n if (isVisible || isCreatorField) {\n acc[attributeName] = { select: opts.relationalFields };\n }\n\n break;\n }\n\n case 'media': {\n acc[attributeName] = { select: ['id'] };\n break;\n }\n\n case 'component': {\n const populate = getDeepPopulate(attribute.component, opts);\n acc[attributeName] = { populate };\n break;\n }\n\n case 'dynamiczone': {\n // Use fragments to populate the dynamic zone components\n const populatedComponents = (attribute.components || []).reduce(\n (acc: any, componentUID: UID.Component) => {\n acc[componentUID] = { populate: getDeepPopulate(componentUID, opts) };\n return acc;\n },\n {}\n );\n\n acc[attributeName] = { on: populatedComponents };\n break;\n }\n default:\n break;\n }\n\n return acc;\n }, {});\n};\n"],"names":["acc"],"mappings":";AAUA,MAAM,EAAE,sBAAsB,yBAAyB,aAAa;AAG7D,MAAM,kBAAkB,CAAC,KAAiB,OAAgB,OAAO;AAChE,QAAA,QAAQ,OAAO,SAAS,GAAG;AACjC,QAAM,aAAa,OAAO,QAAQ,MAAM,UAAU;AAElD,SAAO,WAAW,OAAO,CAAC,KAAU,CAAC,eAAe,SAAS,MAAM;AACjE,YAAQ,UAAU,MAAM;AAAA,MACtB,KAAK,YAAY;AAEf,cAAM,kBAAkB,UAAU,SAAS,YAAY,EAAE,WAAW,OAAO;AAC3E,YAAI,iBAAiB;AACnB;AAAA,QACF;AAGA,cAAM,YAAY,aAAa,mBAAmB,OAAO,aAAa;AACtE,cAAM,iBAAiB,CAAC,sBAAsB,oBAAoB,EAAE,SAAS,aAAa;AAE1F,YAAI,aAAa,gBAAgB;AAC/B,cAAI,aAAa,IAAI,EAAE,QAAQ,KAAK,iBAAiB;AAAA,QACvD;AAEA;AAAA,MACF;AAAA,MAEA,KAAK,SAAS;AACZ,YAAI,aAAa,IAAI,EAAE,QAAQ,CAAC,IAAI,EAAE;AACtC;AAAA,MACF;AAAA,MAEA,KAAK,aAAa;AAChB,cAAM,WAAW,gBAAgB,UAAU,WAAW,IAAI;AACtD,YAAA,aAAa,IAAI,EAAE;AACvB;AAAA,MACF;AAAA,MAEA,KAAK,eAAe;AAElB,cAAM,uBAAuB,UAAU,cAAc,CAAI,GAAA;AAAA,UACvD,CAACA,MAAU,iBAAgC;AACzCA,iBAAI,YAAY,IAAI,EAAE,UAAU,gBAAgB,cAAc,IAAI;AAC3DA,mBAAAA;AAAAA,UACT;AAAA,UACA,CAAC;AAAA,QAAA;AAGH,YAAI,aAAa,IAAI,EAAE,IAAI,oBAAoB;AAC/C;AAAA,MACF;AAAA,IAGF;AAEO,WAAA;AAAA,EACT,GAAG,CAAE,CAAA;AACP;"}
@@ -1,58 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fp = require("lodash/fp");
4
- const load = async (uid, oldEntries) => {
5
- const updates = [];
6
- await strapi.db.transaction(async ({ trx }) => {
7
- const contentTypes = Object.values(strapi.contentTypes);
8
- const components = Object.values(strapi.components);
9
- for (const model of [...contentTypes, ...components]) {
10
- const dbModel = strapi.db.metadata.get(model.uid);
11
- for (const attribute of Object.values(dbModel.attributes)) {
12
- if (attribute.type !== "relation")
13
- continue;
14
- if (attribute.target !== uid)
15
- continue;
16
- if (attribute.inversedBy || attribute.mappedBy)
17
- continue;
18
- const joinTable = attribute.joinTable;
19
- if (!joinTable)
20
- continue;
21
- const { name } = joinTable.inverseJoinColumn;
22
- const oldEntriesIds = oldEntries.map((entry) => entry.id);
23
- const relations = await strapi.db.getConnection().select("*").from(joinTable.name).whereIn(name, oldEntriesIds).transacting(trx);
24
- if (relations.length === 0)
25
- continue;
26
- updates.push({ joinTable, relations });
27
- }
28
- }
29
- });
30
- return updates;
31
- };
32
- const sync = async (oldEntries, newEntries, oldRelations) => {
33
- const newEntryByLocale = fp.keyBy("locale", newEntries);
34
- const oldEntriesMap = oldEntries.reduce(
35
- (acc, entry) => {
36
- const newEntry = newEntryByLocale[entry.locale];
37
- if (!newEntry)
38
- return acc;
39
- acc[entry.id] = newEntry.id;
40
- return acc;
41
- },
42
- {}
43
- );
44
- await strapi.db.transaction(async ({ trx }) => {
45
- const con = strapi.db.getConnection();
46
- for (const { joinTable, relations } of oldRelations) {
47
- const newRelations = relations.map((relation) => {
48
- const column = joinTable.inverseJoinColumn.name;
49
- const newId = oldEntriesMap[relation[column]];
50
- return { ...relation, [column]: newId };
51
- });
52
- await con.batchInsert(joinTable.name, newRelations).transacting(trx);
53
- }
54
- });
55
- };
56
- exports.load = load;
57
- exports.sync = sync;
58
- //# sourceMappingURL=unidirectional-relations.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unidirectional-relations.js","sources":["../../../../src/services/document-service/utils/unidirectional-relations.ts"],"sourcesContent":["/* eslint-disable no-continue */\nimport { keyBy } from 'lodash/fp';\n\nimport { UID, Schema } from '@strapi/types';\n\n/**\n * Loads lingering relations that need to be updated when overriding a published or draft entry.\n * This is necessary because the relations are uni-directional and the target entry is not aware of the source entry.\n * This is not the case for bi-directional relations, where the target entry is also linked to the source entry.\n *\n * @param uid The content type uid\n * @param oldEntries The old entries that are being overridden\n * @returns An array of relations that need to be updated with the join table reference.\n */\nconst load = async (uid: UID.ContentType, oldEntries: { id: string; locale: string }[]) => {\n const updates = [] as any;\n\n // Iterate all components and content types to find relations that need to be updated\n await strapi.db.transaction(async ({ trx }) => {\n const contentTypes = Object.values(strapi.contentTypes) as Schema.ContentType[];\n const components = Object.values(strapi.components) as Schema.Component[];\n\n for (const model of [...contentTypes, ...components]) {\n const dbModel = strapi.db.metadata.get(model.uid);\n\n for (const attribute of Object.values(dbModel.attributes) as any) {\n /**\n * Only consider unidirectional relations\n */\n if (attribute.type !== 'relation') continue;\n if (attribute.target !== uid) continue;\n if (attribute.inversedBy || attribute.mappedBy) continue;\n const joinTable = attribute.joinTable;\n // TODO: joinColumn relations\n if (!joinTable) continue;\n\n const { name } = joinTable.inverseJoinColumn;\n\n /**\n * Load all relations that need to be updated\n */\n const oldEntriesIds = oldEntries.map((entry) => entry.id);\n const relations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(name, oldEntriesIds)\n .transacting(trx);\n\n if (relations.length === 0) continue;\n\n updates.push({ joinTable, relations });\n }\n }\n });\n\n return updates;\n};\n\n/**\n * Updates uni directional relations to target the right entries when overriding published or draft entries.\n *\n * @param oldEntries The old entries that are being overridden\n * @param newEntries The new entries that are overriding the old ones\n * @param oldRelations The relations that were previously loaded with `load` @see load\n */\nconst sync = async (\n oldEntries: { id: string; locale: string }[],\n newEntries: { id: string; locale: string }[],\n oldRelations: { joinTable: any; relations: any[] }[]\n) => {\n /**\n * Create a map of old entry ids to new entry ids\n *\n * Will be used to update the relation target ids\n */\n const newEntryByLocale = keyBy('locale', newEntries);\n const oldEntriesMap = oldEntries.reduce(\n (acc, entry) => {\n const newEntry = newEntryByLocale[entry.locale];\n if (!newEntry) return acc;\n acc[entry.id] = newEntry.id;\n return acc;\n },\n {} as Record<string, string>\n );\n\n await strapi.db.transaction(async ({ trx }) => {\n const con = strapi.db.getConnection();\n\n // Iterate old relations that are deleted and insert the new ones\n for (const { joinTable, relations } of oldRelations) {\n // Update old ids with the new ones\n const newRelations = relations.map((relation) => {\n const column = joinTable.inverseJoinColumn.name;\n const newId = oldEntriesMap[relation[column]];\n return { ...relation, [column]: newId };\n });\n\n // Insert those relations into the join table\n await con.batchInsert(joinTable.name, newRelations).transacting(trx);\n }\n });\n};\n\nexport { load, sync };\n"],"names":["keyBy"],"mappings":";;;AAcM,MAAA,OAAO,OAAO,KAAsB,eAAiD;AACzF,QAAM,UAAU,CAAA;AAGhB,QAAM,OAAO,GAAG,YAAY,OAAO,EAAE,UAAU;AAC7C,UAAM,eAAe,OAAO,OAAO,OAAO,YAAY;AACtD,UAAM,aAAa,OAAO,OAAO,OAAO,UAAU;AAElD,eAAW,SAAS,CAAC,GAAG,cAAc,GAAG,UAAU,GAAG;AACpD,YAAM,UAAU,OAAO,GAAG,SAAS,IAAI,MAAM,GAAG;AAEhD,iBAAW,aAAa,OAAO,OAAO,QAAQ,UAAU,GAAU;AAIhE,YAAI,UAAU,SAAS;AAAY;AACnC,YAAI,UAAU,WAAW;AAAK;AAC1B,YAAA,UAAU,cAAc,UAAU;AAAU;AAChD,cAAM,YAAY,UAAU;AAE5B,YAAI,CAAC;AAAW;AAEV,cAAA,EAAE,KAAK,IAAI,UAAU;AAK3B,cAAM,gBAAgB,WAAW,IAAI,CAAC,UAAU,MAAM,EAAE;AACxD,cAAM,YAAY,MAAM,OAAO,GAC5B,gBACA,OAAO,GAAG,EACV,KAAK,UAAU,IAAI,EACnB,QAAQ,MAAM,aAAa,EAC3B,YAAY,GAAG;AAElB,YAAI,UAAU,WAAW;AAAG;AAE5B,gBAAQ,KAAK,EAAE,WAAW,UAAW,CAAA;AAAA,MACvC;AAAA,IACF;AAAA,EAAA,CACD;AAEM,SAAA;AACT;AASA,MAAM,OAAO,OACX,YACA,YACA,iBACG;AAMG,QAAA,mBAAmBA,GAAAA,MAAM,UAAU,UAAU;AACnD,QAAM,gBAAgB,WAAW;AAAA,IAC/B,CAAC,KAAK,UAAU;AACR,YAAA,WAAW,iBAAiB,MAAM,MAAM;AAC9C,UAAI,CAAC;AAAiB,eAAA;AAClB,UAAA,MAAM,EAAE,IAAI,SAAS;AAClB,aAAA;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EAAA;AAGH,QAAM,OAAO,GAAG,YAAY,OAAO,EAAE,UAAU;AACvC,UAAA,MAAM,OAAO,GAAG,cAAc;AAGpC,eAAW,EAAE,WAAW,UAAU,KAAK,cAAc;AAEnD,YAAM,eAAe,UAAU,IAAI,CAAC,aAAa;AACzC,cAAA,SAAS,UAAU,kBAAkB;AAC3C,cAAM,QAAQ,cAAc,SAAS,MAAM,CAAC;AAC5C,eAAO,EAAE,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM;AAAA,MAAA,CACvC;AAGD,YAAM,IAAI,YAAY,UAAU,MAAM,YAAY,EAAE,YAAY,GAAG;AAAA,IACrE;AAAA,EAAA,CACD;AACH;;;"}
@@ -1,58 +0,0 @@
1
- import { keyBy } from "lodash/fp";
2
- const load = async (uid, oldEntries) => {
3
- const updates = [];
4
- await strapi.db.transaction(async ({ trx }) => {
5
- const contentTypes = Object.values(strapi.contentTypes);
6
- const components = Object.values(strapi.components);
7
- for (const model of [...contentTypes, ...components]) {
8
- const dbModel = strapi.db.metadata.get(model.uid);
9
- for (const attribute of Object.values(dbModel.attributes)) {
10
- if (attribute.type !== "relation")
11
- continue;
12
- if (attribute.target !== uid)
13
- continue;
14
- if (attribute.inversedBy || attribute.mappedBy)
15
- continue;
16
- const joinTable = attribute.joinTable;
17
- if (!joinTable)
18
- continue;
19
- const { name } = joinTable.inverseJoinColumn;
20
- const oldEntriesIds = oldEntries.map((entry) => entry.id);
21
- const relations = await strapi.db.getConnection().select("*").from(joinTable.name).whereIn(name, oldEntriesIds).transacting(trx);
22
- if (relations.length === 0)
23
- continue;
24
- updates.push({ joinTable, relations });
25
- }
26
- }
27
- });
28
- return updates;
29
- };
30
- const sync = async (oldEntries, newEntries, oldRelations) => {
31
- const newEntryByLocale = keyBy("locale", newEntries);
32
- const oldEntriesMap = oldEntries.reduce(
33
- (acc, entry) => {
34
- const newEntry = newEntryByLocale[entry.locale];
35
- if (!newEntry)
36
- return acc;
37
- acc[entry.id] = newEntry.id;
38
- return acc;
39
- },
40
- {}
41
- );
42
- await strapi.db.transaction(async ({ trx }) => {
43
- const con = strapi.db.getConnection();
44
- for (const { joinTable, relations } of oldRelations) {
45
- const newRelations = relations.map((relation) => {
46
- const column = joinTable.inverseJoinColumn.name;
47
- const newId = oldEntriesMap[relation[column]];
48
- return { ...relation, [column]: newId };
49
- });
50
- await con.batchInsert(joinTable.name, newRelations).transacting(trx);
51
- }
52
- });
53
- };
54
- export {
55
- load,
56
- sync
57
- };
58
- //# sourceMappingURL=unidirectional-relations.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"unidirectional-relations.mjs","sources":["../../../../src/services/document-service/utils/unidirectional-relations.ts"],"sourcesContent":["/* eslint-disable no-continue */\nimport { keyBy } from 'lodash/fp';\n\nimport { UID, Schema } from '@strapi/types';\n\n/**\n * Loads lingering relations that need to be updated when overriding a published or draft entry.\n * This is necessary because the relations are uni-directional and the target entry is not aware of the source entry.\n * This is not the case for bi-directional relations, where the target entry is also linked to the source entry.\n *\n * @param uid The content type uid\n * @param oldEntries The old entries that are being overridden\n * @returns An array of relations that need to be updated with the join table reference.\n */\nconst load = async (uid: UID.ContentType, oldEntries: { id: string; locale: string }[]) => {\n const updates = [] as any;\n\n // Iterate all components and content types to find relations that need to be updated\n await strapi.db.transaction(async ({ trx }) => {\n const contentTypes = Object.values(strapi.contentTypes) as Schema.ContentType[];\n const components = Object.values(strapi.components) as Schema.Component[];\n\n for (const model of [...contentTypes, ...components]) {\n const dbModel = strapi.db.metadata.get(model.uid);\n\n for (const attribute of Object.values(dbModel.attributes) as any) {\n /**\n * Only consider unidirectional relations\n */\n if (attribute.type !== 'relation') continue;\n if (attribute.target !== uid) continue;\n if (attribute.inversedBy || attribute.mappedBy) continue;\n const joinTable = attribute.joinTable;\n // TODO: joinColumn relations\n if (!joinTable) continue;\n\n const { name } = joinTable.inverseJoinColumn;\n\n /**\n * Load all relations that need to be updated\n */\n const oldEntriesIds = oldEntries.map((entry) => entry.id);\n const relations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(name, oldEntriesIds)\n .transacting(trx);\n\n if (relations.length === 0) continue;\n\n updates.push({ joinTable, relations });\n }\n }\n });\n\n return updates;\n};\n\n/**\n * Updates uni directional relations to target the right entries when overriding published or draft entries.\n *\n * @param oldEntries The old entries that are being overridden\n * @param newEntries The new entries that are overriding the old ones\n * @param oldRelations The relations that were previously loaded with `load` @see load\n */\nconst sync = async (\n oldEntries: { id: string; locale: string }[],\n newEntries: { id: string; locale: string }[],\n oldRelations: { joinTable: any; relations: any[] }[]\n) => {\n /**\n * Create a map of old entry ids to new entry ids\n *\n * Will be used to update the relation target ids\n */\n const newEntryByLocale = keyBy('locale', newEntries);\n const oldEntriesMap = oldEntries.reduce(\n (acc, entry) => {\n const newEntry = newEntryByLocale[entry.locale];\n if (!newEntry) return acc;\n acc[entry.id] = newEntry.id;\n return acc;\n },\n {} as Record<string, string>\n );\n\n await strapi.db.transaction(async ({ trx }) => {\n const con = strapi.db.getConnection();\n\n // Iterate old relations that are deleted and insert the new ones\n for (const { joinTable, relations } of oldRelations) {\n // Update old ids with the new ones\n const newRelations = relations.map((relation) => {\n const column = joinTable.inverseJoinColumn.name;\n const newId = oldEntriesMap[relation[column]];\n return { ...relation, [column]: newId };\n });\n\n // Insert those relations into the join table\n await con.batchInsert(joinTable.name, newRelations).transacting(trx);\n }\n });\n};\n\nexport { load, sync };\n"],"names":[],"mappings":";AAcM,MAAA,OAAO,OAAO,KAAsB,eAAiD;AACzF,QAAM,UAAU,CAAA;AAGhB,QAAM,OAAO,GAAG,YAAY,OAAO,EAAE,UAAU;AAC7C,UAAM,eAAe,OAAO,OAAO,OAAO,YAAY;AACtD,UAAM,aAAa,OAAO,OAAO,OAAO,UAAU;AAElD,eAAW,SAAS,CAAC,GAAG,cAAc,GAAG,UAAU,GAAG;AACpD,YAAM,UAAU,OAAO,GAAG,SAAS,IAAI,MAAM,GAAG;AAEhD,iBAAW,aAAa,OAAO,OAAO,QAAQ,UAAU,GAAU;AAIhE,YAAI,UAAU,SAAS;AAAY;AACnC,YAAI,UAAU,WAAW;AAAK;AAC1B,YAAA,UAAU,cAAc,UAAU;AAAU;AAChD,cAAM,YAAY,UAAU;AAE5B,YAAI,CAAC;AAAW;AAEV,cAAA,EAAE,KAAK,IAAI,UAAU;AAK3B,cAAM,gBAAgB,WAAW,IAAI,CAAC,UAAU,MAAM,EAAE;AACxD,cAAM,YAAY,MAAM,OAAO,GAC5B,gBACA,OAAO,GAAG,EACV,KAAK,UAAU,IAAI,EACnB,QAAQ,MAAM,aAAa,EAC3B,YAAY,GAAG;AAElB,YAAI,UAAU,WAAW;AAAG;AAE5B,gBAAQ,KAAK,EAAE,WAAW,UAAW,CAAA;AAAA,MACvC;AAAA,IACF;AAAA,EAAA,CACD;AAEM,SAAA;AACT;AASA,MAAM,OAAO,OACX,YACA,YACA,iBACG;AAMG,QAAA,mBAAmB,MAAM,UAAU,UAAU;AACnD,QAAM,gBAAgB,WAAW;AAAA,IAC/B,CAAC,KAAK,UAAU;AACR,YAAA,WAAW,iBAAiB,MAAM,MAAM;AAC9C,UAAI,CAAC;AAAiB,eAAA;AAClB,UAAA,MAAM,EAAE,IAAI,SAAS;AAClB,aAAA;AAAA,IACT;AAAA,IACA,CAAC;AAAA,EAAA;AAGH,QAAM,OAAO,GAAG,YAAY,OAAO,EAAE,UAAU;AACvC,UAAA,MAAM,OAAO,GAAG,cAAc;AAGpC,eAAW,EAAE,WAAW,UAAU,KAAK,cAAc;AAEnD,YAAM,eAAe,UAAU,IAAI,CAAC,aAAa;AACzC,cAAA,SAAS,UAAU,kBAAkB;AAC3C,cAAM,QAAQ,cAAc,SAAS,MAAM,CAAC;AAC5C,eAAO,EAAE,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM;AAAA,MAAA,CACvC;AAGD,YAAM,IAAI,YAAY,UAAU,MAAM,YAAY,EAAE,YAAY,GAAG;AAAA,IACrE;AAAA,EAAA,CACD;AACH;"}
@@ -1,169 +0,0 @@
1
- "use strict";
2
- const _ = require("lodash");
3
- const delegate = require("delegates");
4
- const database = require("@strapi/database");
5
- const strapiUtils = require("@strapi/utils");
6
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
7
- const ___default = /* @__PURE__ */ _interopDefault(_);
8
- const delegate__default = /* @__PURE__ */ _interopDefault(delegate);
9
- const transformLoadParamsToQuery = (uid, field, params, pagination = {}) => {
10
- const query = strapi.get("query-params").transform(uid, { populate: { [field]: params } });
11
- const res = {
12
- ...query.populate[field],
13
- ...pagination
14
- };
15
- return res;
16
- };
17
- const databaseErrorsToTransform = [
18
- database.errors.InvalidTimeError,
19
- database.errors.InvalidDateTimeError,
20
- database.errors.InvalidDateError,
21
- database.errors.InvalidRelationError
22
- ];
23
- const createDefaultImplementation = ({
24
- strapi: strapi2,
25
- db
26
- }) => ({
27
- async wrapParams(options = {}) {
28
- return options;
29
- },
30
- async wrapResult(result = {}) {
31
- return result;
32
- },
33
- async findMany(uid, opts) {
34
- const { kind } = strapi2.getModel(uid);
35
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findMany" });
36
- if (kind === "singleType") {
37
- const entity = strapi2.documents(uid).findFirst(wrappedParams);
38
- return this.wrapResult(entity, { uid, action: "findOne" });
39
- }
40
- const entities = await strapi2.documents(uid).findMany(wrappedParams);
41
- return this.wrapResult(entities, { uid, action: "findMany" });
42
- },
43
- async findPage(uid, opts) {
44
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findPage" });
45
- const query = strapi2.get("query-params").transform(uid, wrappedParams);
46
- const entities = await db.query(uid).findPage(query);
47
- return this.wrapResult(entities, { uid, action: "findMany" });
48
- },
49
- async findOne(uid, entityId, opts) {
50
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findOne" });
51
- const res = await db.query(uid).findOne({ where: { id: entityId } });
52
- if (!res) {
53
- return this.wrapResult(null, { uid, action: "findOne" });
54
- }
55
- const entity = await strapi2.documents(uid).findOne({
56
- ...wrappedParams,
57
- documentId: res.documentId
58
- });
59
- return this.wrapResult(entity, { uid, action: "findOne" });
60
- },
61
- async count(uid, opts) {
62
- const wrappedParams = await this.wrapParams(opts, { uid, action: "count" });
63
- return strapi2.documents(uid).count(wrappedParams);
64
- },
65
- async create(uid, params) {
66
- const wrappedParams = await this.wrapParams(params, { uid, action: "create" });
67
- const { data } = wrappedParams;
68
- if (!data) {
69
- throw new Error("cannot create");
70
- }
71
- const shouldPublish = !strapiUtils.contentTypes.isDraft(data, strapi2.getModel(uid));
72
- const entity = await strapi2.documents(uid).create({
73
- ...wrappedParams,
74
- status: shouldPublish ? "published" : "draft"
75
- });
76
- return this.wrapResult(entity, { uid, action: "create" });
77
- },
78
- async update(uid, entityId, opts) {
79
- const wrappedParams = await this.wrapParams(opts, {
80
- uid,
81
- action: "update"
82
- });
83
- const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });
84
- if (!entityToUpdate) {
85
- return this.wrapResult(null, { uid, action: "update" });
86
- }
87
- const shouldPublish = !strapiUtils.contentTypes.isDraft(entityToUpdate, strapi2.getModel(uid));
88
- const entity = strapi2.documents(uid).update({
89
- ...wrappedParams,
90
- status: shouldPublish ? "published" : "draft",
91
- documentId: entityToUpdate.documentId
92
- });
93
- return this.wrapResult(entity, { uid, action: "update" });
94
- },
95
- async delete(uid, entityId, opts) {
96
- const wrappedParams = await this.wrapParams(opts, { uid, action: "delete" });
97
- const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });
98
- if (!entityToDelete) {
99
- return this.wrapResult(null, { uid, action: "delete" });
100
- }
101
- await strapi2.documents(uid).delete({
102
- ...wrappedParams,
103
- documentId: entityToDelete.documentId
104
- });
105
- return this.wrapResult(entityToDelete, { uid, action: "delete" });
106
- },
107
- async load(uid, entity, field, params) {
108
- if (!___default.default.isString(field)) {
109
- throw new Error(`Invalid load. Expected "${field}" to be a string`);
110
- }
111
- const loadedEntity = await db.query(uid).load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));
112
- return this.wrapResult(loadedEntity, { uid, field, action: "load" });
113
- },
114
- async loadPages(uid, entity, field, params, pagination = {}) {
115
- if (!___default.default.isString(field)) {
116
- throw new Error(`Invalid load. Expected "${field}" to be a string`);
117
- }
118
- const { attributes } = strapi2.getModel(uid);
119
- const attribute = attributes[field];
120
- if (!strapiUtils.relations.isAnyToMany(attribute)) {
121
- throw new Error(`Invalid load. Expected "${field}" to be an anyToMany relational attribute`);
122
- }
123
- const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);
124
- const loadedPage = await db.query(uid).loadPages(entity, field, query);
125
- return {
126
- ...loadedPage,
127
- results: await this.wrapResult(loadedPage.results, { uid, field, action: "load" })
128
- };
129
- }
130
- });
131
- const createEntityService = (ctx) => {
132
- const implementation = createDefaultImplementation(ctx);
133
- const service = {
134
- implementation,
135
- decorate(decorator) {
136
- if (typeof decorator !== "function") {
137
- throw new Error(`Decorator must be a function, received ${typeof decorator}`);
138
- }
139
- this.implementation = { ...this.implementation, ...decorator(this.implementation) };
140
- return this;
141
- }
142
- };
143
- const delegator = delegate__default.default(service, "implementation");
144
- Object.keys(service.implementation).forEach((key) => delegator.method(key));
145
- service.decorate((oldService) => {
146
- const newService = ___default.default.mapValues(
147
- oldService,
148
- (method, methodName) => async function(...args) {
149
- try {
150
- return await oldService[methodName].call(this, ...args);
151
- } catch (error) {
152
- if (databaseErrorsToTransform.some(
153
- (errorToTransform) => error instanceof errorToTransform
154
- )) {
155
- if (error instanceof Error) {
156
- throw new strapiUtils.errors.ValidationError(error.message);
157
- }
158
- throw error;
159
- }
160
- throw error;
161
- }
162
- }
163
- );
164
- return newService;
165
- });
166
- return service;
167
- };
168
- module.exports = createEntityService;
169
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n errors,\n relations as relationUtils,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type { Core, Modules, Utils } from '@strapi/types';\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: Modules.EntityService.EntityService) => Modules.EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = strapi\n .get('query-params')\n .transform(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n}: {\n strapi: Core.Strapi;\n db: Database;\n}): Modules.EntityService.EntityService => ({\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n if (kind === 'singleType') {\n const entity = strapi.documents!(uid).findFirst(wrappedParams);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await strapi.documents!(uid).findMany(wrappedParams);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = strapi.get('query-params').transform(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n const res = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!res) {\n return this.wrapResult(null, { uid, action: 'findOne' });\n }\n\n const entity = await strapi.documents!(uid).findOne({\n ...wrappedParams,\n documentId: res.documentId,\n });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n return strapi.documents!(uid).count(wrappedParams);\n },\n\n async create(uid, params) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data' | 'fields' | 'populate'>\n >(params, { uid, action: 'create' });\n const { data } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(data, strapi.getModel(uid));\n\n const entity = await strapi.documents!(uid).create({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n });\n\n return this.wrapResult(entity, { uid, action: 'create' });\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data:partial' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return this.wrapResult(null, { uid, action: 'update' });\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(entityToUpdate, strapi.getModel(uid));\n\n const entity = strapi.documents!(uid).update({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n documentId: entityToUpdate.documentId,\n });\n\n return this.wrapResult(entity, { uid, action: 'update' });\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToDelete) {\n return this.wrapResult(null, { uid, action: 'delete' });\n }\n\n await strapi.documents!(uid).delete({\n ...wrappedParams,\n documentId: entityToDelete.documentId,\n });\n\n return this.wrapResult(entityToDelete, { uid, action: 'delete' });\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Core.Strapi;\n db: Database;\n}): Decoratable<Modules.EntityService.EntityService> => {\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: Modules.EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof Modules.EntityService.EntityService) =>\n async function (this: Modules.EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<Modules.EntityService.EntityService>;\n};\n"],"names":["databaseErrors","strapi","contentTypesUtils","_","relationUtils","delegate","errors"],"mappings":"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"}