@strapi/core 0.0.0-next.959c5589d0d3efa25d7ca014656d9ff48c173399 → 0.0.0-next.9e9a841899e6378b6f48ab8f419e4b0cc62bdf32

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 (696) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/configuration/index.d.ts.map +1 -1
  3. package/dist/index.js +9954 -27
  4. package/dist/index.js.map +1 -1
  5. package/dist/index.mjs +9932 -29
  6. package/dist/index.mjs.map +1 -1
  7. package/dist/middlewares/body.d.ts.map +1 -1
  8. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  9. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  10. package/dist/migrations/draft-publish.d.ts +1 -1
  11. package/dist/migrations/draft-publish.d.ts.map +1 -1
  12. package/dist/services/document-service/common.d.ts +1 -1
  13. package/dist/services/document-service/common.d.ts.map +1 -1
  14. package/dist/services/document-service/components.d.ts.map +1 -1
  15. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  16. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  17. package/dist/services/document-service/entries.d.ts +2 -2
  18. package/dist/services/document-service/entries.d.ts.map +1 -1
  19. package/dist/services/document-service/events.d.ts +1 -1
  20. package/dist/services/document-service/events.d.ts.map +1 -1
  21. package/dist/services/document-service/index.d.ts +2 -1
  22. package/dist/services/document-service/index.d.ts.map +1 -1
  23. package/dist/services/document-service/repository.d.ts.map +1 -1
  24. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  25. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  26. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  27. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  28. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  29. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  30. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  31. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  32. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  33. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  34. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  35. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  36. package/dist/services/document-service/utils/populate.d.ts +1 -1
  37. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  38. package/dist/services/document-service/utils/unidirectional-relations.d.ts +1 -1
  39. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  40. package/dist/services/entity-validator/index.d.ts +1 -1
  41. package/dist/services/entity-validator/index.d.ts.map +1 -1
  42. package/dist/services/metrics/middleware.d.ts.map +1 -1
  43. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  44. package/dist/utils/startup-logger.d.ts.map +1 -1
  45. package/dist/utils/transform-content-types-to-models.d.ts +353 -21
  46. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  47. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  48. package/package.json +25 -26
  49. package/dist/Strapi.js +0 -431
  50. package/dist/Strapi.js.map +0 -1
  51. package/dist/Strapi.mjs +0 -410
  52. package/dist/Strapi.mjs.map +0 -1
  53. package/dist/compile.js +0 -18
  54. package/dist/compile.js.map +0 -1
  55. package/dist/compile.mjs +0 -17
  56. package/dist/compile.mjs.map +0 -1
  57. package/dist/configuration/config-loader.js +0 -106
  58. package/dist/configuration/config-loader.js.map +0 -1
  59. package/dist/configuration/config-loader.mjs +0 -104
  60. package/dist/configuration/config-loader.mjs.map +0 -1
  61. package/dist/configuration/get-dirs.js +0 -31
  62. package/dist/configuration/get-dirs.js.map +0 -1
  63. package/dist/configuration/get-dirs.mjs +0 -31
  64. package/dist/configuration/get-dirs.mjs.map +0 -1
  65. package/dist/configuration/index.js +0 -80
  66. package/dist/configuration/index.js.map +0 -1
  67. package/dist/configuration/index.mjs +0 -75
  68. package/dist/configuration/index.mjs.map +0 -1
  69. package/dist/configuration/urls.js +0 -68
  70. package/dist/configuration/urls.js.map +0 -1
  71. package/dist/configuration/urls.mjs +0 -66
  72. package/dist/configuration/urls.mjs.map +0 -1
  73. package/dist/container.js +0 -30
  74. package/dist/container.js.map +0 -1
  75. package/dist/container.mjs +0 -30
  76. package/dist/container.mjs.map +0 -1
  77. package/dist/core-api/controller/collection-type.js +0 -84
  78. package/dist/core-api/controller/collection-type.js.map +0 -1
  79. package/dist/core-api/controller/collection-type.mjs +0 -84
  80. package/dist/core-api/controller/collection-type.mjs.map +0 -1
  81. package/dist/core-api/controller/index.js +0 -52
  82. package/dist/core-api/controller/index.js.map +0 -1
  83. package/dist/core-api/controller/index.mjs +0 -52
  84. package/dist/core-api/controller/index.mjs.map +0 -1
  85. package/dist/core-api/controller/single-type.js +0 -46
  86. package/dist/core-api/controller/single-type.js.map +0 -1
  87. package/dist/core-api/controller/single-type.mjs +0 -46
  88. package/dist/core-api/controller/single-type.mjs.map +0 -1
  89. package/dist/core-api/controller/transform.js +0 -76
  90. package/dist/core-api/controller/transform.js.map +0 -1
  91. package/dist/core-api/controller/transform.mjs +0 -76
  92. package/dist/core-api/controller/transform.mjs.map +0 -1
  93. package/dist/core-api/routes/index.js +0 -67
  94. package/dist/core-api/routes/index.js.map +0 -1
  95. package/dist/core-api/routes/index.mjs +0 -67
  96. package/dist/core-api/routes/index.mjs.map +0 -1
  97. package/dist/core-api/service/collection-type.js +0 -67
  98. package/dist/core-api/service/collection-type.js.map +0 -1
  99. package/dist/core-api/service/collection-type.mjs +0 -67
  100. package/dist/core-api/service/collection-type.mjs.map +0 -1
  101. package/dist/core-api/service/core-service.js +0 -12
  102. package/dist/core-api/service/core-service.js.map +0 -1
  103. package/dist/core-api/service/core-service.mjs +0 -12
  104. package/dist/core-api/service/core-service.mjs.map +0 -1
  105. package/dist/core-api/service/index.js +0 -16
  106. package/dist/core-api/service/index.js.map +0 -1
  107. package/dist/core-api/service/index.mjs +0 -16
  108. package/dist/core-api/service/index.mjs.map +0 -1
  109. package/dist/core-api/service/pagination.js +0 -52
  110. package/dist/core-api/service/pagination.js.map +0 -1
  111. package/dist/core-api/service/pagination.mjs +0 -52
  112. package/dist/core-api/service/pagination.mjs.map +0 -1
  113. package/dist/core-api/service/single-type.js +0 -46
  114. package/dist/core-api/service/single-type.js.map +0 -1
  115. package/dist/core-api/service/single-type.mjs +0 -46
  116. package/dist/core-api/service/single-type.mjs.map +0 -1
  117. package/dist/domain/content-type/index.js +0 -111
  118. package/dist/domain/content-type/index.js.map +0 -1
  119. package/dist/domain/content-type/index.mjs +0 -109
  120. package/dist/domain/content-type/index.mjs.map +0 -1
  121. package/dist/domain/content-type/validator.js +0 -77
  122. package/dist/domain/content-type/validator.js.map +0 -1
  123. package/dist/domain/content-type/validator.mjs +0 -75
  124. package/dist/domain/content-type/validator.mjs.map +0 -1
  125. package/dist/domain/module/index.js +0 -107
  126. package/dist/domain/module/index.js.map +0 -1
  127. package/dist/domain/module/index.mjs +0 -105
  128. package/dist/domain/module/index.mjs.map +0 -1
  129. package/dist/domain/module/validation.js +0 -25
  130. package/dist/domain/module/validation.js.map +0 -1
  131. package/dist/domain/module/validation.mjs +0 -25
  132. package/dist/domain/module/validation.mjs.map +0 -1
  133. package/dist/ee/index.js +0 -158
  134. package/dist/ee/index.js.map +0 -1
  135. package/dist/ee/index.mjs +0 -159
  136. package/dist/ee/index.mjs.map +0 -1
  137. package/dist/ee/license.js +0 -91
  138. package/dist/ee/license.js.map +0 -1
  139. package/dist/ee/license.mjs +0 -88
  140. package/dist/ee/license.mjs.map +0 -1
  141. package/dist/factories.js +0 -80
  142. package/dist/factories.js.map +0 -1
  143. package/dist/factories.mjs +0 -80
  144. package/dist/factories.mjs.map +0 -1
  145. package/dist/loaders/admin.js +0 -26
  146. package/dist/loaders/admin.js.map +0 -1
  147. package/dist/loaders/admin.mjs +0 -25
  148. package/dist/loaders/admin.mjs.map +0 -1
  149. package/dist/loaders/apis.js +0 -137
  150. package/dist/loaders/apis.js.map +0 -1
  151. package/dist/loaders/apis.mjs +0 -135
  152. package/dist/loaders/apis.mjs.map +0 -1
  153. package/dist/loaders/components.js +0 -38
  154. package/dist/loaders/components.js.map +0 -1
  155. package/dist/loaders/components.mjs +0 -37
  156. package/dist/loaders/components.mjs.map +0 -1
  157. package/dist/loaders/index.js +0 -24
  158. package/dist/loaders/index.js.map +0 -1
  159. package/dist/loaders/index.mjs +0 -24
  160. package/dist/loaders/index.mjs.map +0 -1
  161. package/dist/loaders/middlewares.js +0 -31
  162. package/dist/loaders/middlewares.js.map +0 -1
  163. package/dist/loaders/middlewares.mjs +0 -30
  164. package/dist/loaders/middlewares.mjs.map +0 -1
  165. package/dist/loaders/plugins/get-enabled-plugins.js +0 -141
  166. package/dist/loaders/plugins/get-enabled-plugins.js.map +0 -1
  167. package/dist/loaders/plugins/get-enabled-plugins.mjs +0 -117
  168. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +0 -1
  169. package/dist/loaders/plugins/get-user-plugins-config.js +0 -27
  170. package/dist/loaders/plugins/get-user-plugins-config.js.map +0 -1
  171. package/dist/loaders/plugins/get-user-plugins-config.mjs +0 -25
  172. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +0 -1
  173. package/dist/loaders/plugins/index.js +0 -145
  174. package/dist/loaders/plugins/index.js.map +0 -1
  175. package/dist/loaders/plugins/index.mjs +0 -125
  176. package/dist/loaders/plugins/index.mjs.map +0 -1
  177. package/dist/loaders/policies.js +0 -25
  178. package/dist/loaders/policies.js.map +0 -1
  179. package/dist/loaders/policies.mjs +0 -24
  180. package/dist/loaders/policies.mjs.map +0 -1
  181. package/dist/loaders/sanitizers.js +0 -6
  182. package/dist/loaders/sanitizers.js.map +0 -1
  183. package/dist/loaders/sanitizers.mjs +0 -7
  184. package/dist/loaders/sanitizers.mjs.map +0 -1
  185. package/dist/loaders/src-index.js +0 -33
  186. package/dist/loaders/src-index.js.map +0 -1
  187. package/dist/loaders/src-index.mjs +0 -34
  188. package/dist/loaders/src-index.mjs.map +0 -1
  189. package/dist/loaders/validators.js +0 -6
  190. package/dist/loaders/validators.js.map +0 -1
  191. package/dist/loaders/validators.mjs +0 -7
  192. package/dist/loaders/validators.mjs.map +0 -1
  193. package/dist/middlewares/body.js +0 -65
  194. package/dist/middlewares/body.js.map +0 -1
  195. package/dist/middlewares/body.mjs +0 -61
  196. package/dist/middlewares/body.mjs.map +0 -1
  197. package/dist/middlewares/compression.js +0 -8
  198. package/dist/middlewares/compression.js.map +0 -1
  199. package/dist/middlewares/compression.mjs +0 -6
  200. package/dist/middlewares/compression.mjs.map +0 -1
  201. package/dist/middlewares/cors.js +0 -53
  202. package/dist/middlewares/cors.js.map +0 -1
  203. package/dist/middlewares/cors.mjs +0 -51
  204. package/dist/middlewares/cors.mjs.map +0 -1
  205. package/dist/middlewares/errors.js +0 -33
  206. package/dist/middlewares/errors.js.map +0 -1
  207. package/dist/middlewares/errors.mjs +0 -33
  208. package/dist/middlewares/errors.mjs.map +0 -1
  209. package/dist/middlewares/favicon.js +0 -22
  210. package/dist/middlewares/favicon.js.map +0 -1
  211. package/dist/middlewares/favicon.mjs +0 -20
  212. package/dist/middlewares/favicon.mjs.map +0 -1
  213. package/dist/middlewares/index.js +0 -34
  214. package/dist/middlewares/index.js.map +0 -1
  215. package/dist/middlewares/index.mjs +0 -34
  216. package/dist/middlewares/index.mjs.map +0 -1
  217. package/dist/middlewares/ip.js +0 -8
  218. package/dist/middlewares/ip.js.map +0 -1
  219. package/dist/middlewares/ip.mjs +0 -6
  220. package/dist/middlewares/ip.mjs.map +0 -1
  221. package/dist/middlewares/logger.js +0 -12
  222. package/dist/middlewares/logger.js.map +0 -1
  223. package/dist/middlewares/logger.mjs +0 -12
  224. package/dist/middlewares/logger.mjs.map +0 -1
  225. package/dist/middlewares/powered-by.js +0 -14
  226. package/dist/middlewares/powered-by.js.map +0 -1
  227. package/dist/middlewares/powered-by.mjs +0 -14
  228. package/dist/middlewares/powered-by.mjs.map +0 -1
  229. package/dist/middlewares/public.js +0 -34
  230. package/dist/middlewares/public.js.map +0 -1
  231. package/dist/middlewares/public.mjs +0 -32
  232. package/dist/middlewares/public.mjs.map +0 -1
  233. package/dist/middlewares/query.js +0 -40
  234. package/dist/middlewares/query.js.map +0 -1
  235. package/dist/middlewares/query.mjs +0 -38
  236. package/dist/middlewares/query.mjs.map +0 -1
  237. package/dist/middlewares/response-time.js +0 -12
  238. package/dist/middlewares/response-time.js.map +0 -1
  239. package/dist/middlewares/response-time.mjs +0 -12
  240. package/dist/middlewares/response-time.mjs.map +0 -1
  241. package/dist/middlewares/responses.js +0 -15
  242. package/dist/middlewares/responses.js.map +0 -1
  243. package/dist/middlewares/responses.mjs +0 -15
  244. package/dist/middlewares/responses.mjs.map +0 -1
  245. package/dist/middlewares/security.js +0 -78
  246. package/dist/middlewares/security.js.map +0 -1
  247. package/dist/middlewares/security.mjs +0 -76
  248. package/dist/middlewares/security.mjs.map +0 -1
  249. package/dist/middlewares/session.js +0 -30
  250. package/dist/middlewares/session.js.map +0 -1
  251. package/dist/middlewares/session.mjs +0 -28
  252. package/dist/middlewares/session.mjs.map +0 -1
  253. package/dist/migrations/database/5.0.0-discard-drafts.js +0 -94
  254. package/dist/migrations/database/5.0.0-discard-drafts.js.map +0 -1
  255. package/dist/migrations/database/5.0.0-discard-drafts.mjs +0 -94
  256. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +0 -1
  257. package/dist/migrations/draft-publish.js +0 -42
  258. package/dist/migrations/draft-publish.js.map +0 -1
  259. package/dist/migrations/draft-publish.mjs +0 -42
  260. package/dist/migrations/draft-publish.mjs.map +0 -1
  261. package/dist/migrations/i18n.js +0 -54
  262. package/dist/migrations/i18n.js.map +0 -1
  263. package/dist/migrations/i18n.mjs +0 -54
  264. package/dist/migrations/i18n.mjs.map +0 -1
  265. package/dist/migrations/index.js +0 -15
  266. package/dist/migrations/index.js.map +0 -1
  267. package/dist/migrations/index.mjs +0 -15
  268. package/dist/migrations/index.mjs.map +0 -1
  269. package/dist/providers/admin.js +0 -20
  270. package/dist/providers/admin.js.map +0 -1
  271. package/dist/providers/admin.mjs +0 -21
  272. package/dist/providers/admin.mjs.map +0 -1
  273. package/dist/providers/coreStore.js +0 -11
  274. package/dist/providers/coreStore.js.map +0 -1
  275. package/dist/providers/coreStore.mjs +0 -12
  276. package/dist/providers/coreStore.mjs.map +0 -1
  277. package/dist/providers/cron.js +0 -20
  278. package/dist/providers/cron.js.map +0 -1
  279. package/dist/providers/cron.mjs +0 -21
  280. package/dist/providers/cron.mjs.map +0 -1
  281. package/dist/providers/index.js +0 -11
  282. package/dist/providers/index.js.map +0 -1
  283. package/dist/providers/index.mjs +0 -11
  284. package/dist/providers/index.mjs.map +0 -1
  285. package/dist/providers/provider.js +0 -5
  286. package/dist/providers/provider.js.map +0 -1
  287. package/dist/providers/provider.mjs +0 -5
  288. package/dist/providers/provider.mjs.map +0 -1
  289. package/dist/providers/registries.js +0 -35
  290. package/dist/providers/registries.js.map +0 -1
  291. package/dist/providers/registries.mjs +0 -36
  292. package/dist/providers/registries.mjs.map +0 -1
  293. package/dist/providers/telemetry.js +0 -19
  294. package/dist/providers/telemetry.js.map +0 -1
  295. package/dist/providers/telemetry.mjs +0 -20
  296. package/dist/providers/telemetry.mjs.map +0 -1
  297. package/dist/providers/webhooks.js +0 -30
  298. package/dist/providers/webhooks.js.map +0 -1
  299. package/dist/providers/webhooks.mjs +0 -31
  300. package/dist/providers/webhooks.mjs.map +0 -1
  301. package/dist/registries/apis.js +0 -23
  302. package/dist/registries/apis.js.map +0 -1
  303. package/dist/registries/apis.mjs +0 -24
  304. package/dist/registries/apis.mjs.map +0 -1
  305. package/dist/registries/components.js +0 -45
  306. package/dist/registries/components.js.map +0 -1
  307. package/dist/registries/components.mjs +0 -46
  308. package/dist/registries/components.mjs.map +0 -1
  309. package/dist/registries/content-types.js +0 -70
  310. package/dist/registries/content-types.js.map +0 -1
  311. package/dist/registries/content-types.mjs +0 -71
  312. package/dist/registries/content-types.mjs.map +0 -1
  313. package/dist/registries/controllers.js +0 -80
  314. package/dist/registries/controllers.js.map +0 -1
  315. package/dist/registries/controllers.mjs +0 -81
  316. package/dist/registries/controllers.mjs.map +0 -1
  317. package/dist/registries/custom-fields.js +0 -71
  318. package/dist/registries/custom-fields.js.map +0 -1
  319. package/dist/registries/custom-fields.mjs +0 -72
  320. package/dist/registries/custom-fields.mjs.map +0 -1
  321. package/dist/registries/hooks.js +0 -58
  322. package/dist/registries/hooks.js.map +0 -1
  323. package/dist/registries/hooks.mjs +0 -59
  324. package/dist/registries/hooks.mjs.map +0 -1
  325. package/dist/registries/middlewares.js +0 -60
  326. package/dist/registries/middlewares.js.map +0 -1
  327. package/dist/registries/middlewares.mjs +0 -61
  328. package/dist/registries/middlewares.mjs.map +0 -1
  329. package/dist/registries/models.js +0 -16
  330. package/dist/registries/models.js.map +0 -1
  331. package/dist/registries/models.mjs +0 -16
  332. package/dist/registries/models.mjs.map +0 -1
  333. package/dist/registries/modules.js +0 -39
  334. package/dist/registries/modules.js.map +0 -1
  335. package/dist/registries/modules.mjs +0 -40
  336. package/dist/registries/modules.mjs.map +0 -1
  337. package/dist/registries/namespace.js +0 -27
  338. package/dist/registries/namespace.js.map +0 -1
  339. package/dist/registries/namespace.mjs +0 -27
  340. package/dist/registries/namespace.mjs.map +0 -1
  341. package/dist/registries/plugins.js +0 -23
  342. package/dist/registries/plugins.js.map +0 -1
  343. package/dist/registries/plugins.mjs +0 -24
  344. package/dist/registries/plugins.mjs.map +0 -1
  345. package/dist/registries/policies.js +0 -108
  346. package/dist/registries/policies.js.map +0 -1
  347. package/dist/registries/policies.mjs +0 -109
  348. package/dist/registries/policies.mjs.map +0 -1
  349. package/dist/registries/sanitizers.js +0 -25
  350. package/dist/registries/sanitizers.js.map +0 -1
  351. package/dist/registries/sanitizers.mjs +0 -24
  352. package/dist/registries/sanitizers.mjs.map +0 -1
  353. package/dist/registries/services.js +0 -80
  354. package/dist/registries/services.js.map +0 -1
  355. package/dist/registries/services.mjs +0 -81
  356. package/dist/registries/services.mjs.map +0 -1
  357. package/dist/registries/validators.js +0 -25
  358. package/dist/registries/validators.js.map +0 -1
  359. package/dist/registries/validators.mjs +0 -24
  360. package/dist/registries/validators.mjs.map +0 -1
  361. package/dist/services/auth/index.js +0 -81
  362. package/dist/services/auth/index.js.map +0 -1
  363. package/dist/services/auth/index.mjs +0 -80
  364. package/dist/services/auth/index.mjs.map +0 -1
  365. package/dist/services/config.js +0 -47
  366. package/dist/services/config.js.map +0 -1
  367. package/dist/services/config.mjs +0 -47
  368. package/dist/services/config.mjs.map +0 -1
  369. package/dist/services/content-api/index.js +0 -85
  370. package/dist/services/content-api/index.js.map +0 -1
  371. package/dist/services/content-api/index.mjs +0 -84
  372. package/dist/services/content-api/index.mjs.map +0 -1
  373. package/dist/services/content-api/permissions/engine.js +0 -7
  374. package/dist/services/content-api/permissions/engine.js.map +0 -1
  375. package/dist/services/content-api/permissions/engine.mjs +0 -6
  376. package/dist/services/content-api/permissions/engine.mjs.map +0 -1
  377. package/dist/services/content-api/permissions/index.js +0 -87
  378. package/dist/services/content-api/permissions/index.js.map +0 -1
  379. package/dist/services/content-api/permissions/index.mjs +0 -86
  380. package/dist/services/content-api/permissions/index.mjs.map +0 -1
  381. package/dist/services/content-api/permissions/providers/action.js +0 -16
  382. package/dist/services/content-api/permissions/providers/action.js.map +0 -1
  383. package/dist/services/content-api/permissions/providers/action.mjs +0 -17
  384. package/dist/services/content-api/permissions/providers/action.mjs.map +0 -1
  385. package/dist/services/content-api/permissions/providers/condition.js +0 -16
  386. package/dist/services/content-api/permissions/providers/condition.js.map +0 -1
  387. package/dist/services/content-api/permissions/providers/condition.mjs +0 -17
  388. package/dist/services/content-api/permissions/providers/condition.mjs.map +0 -1
  389. package/dist/services/core-store.js +0 -107
  390. package/dist/services/core-store.js.map +0 -1
  391. package/dist/services/core-store.mjs +0 -107
  392. package/dist/services/core-store.mjs.map +0 -1
  393. package/dist/services/cron.js +0 -63
  394. package/dist/services/cron.js.map +0 -1
  395. package/dist/services/cron.mjs +0 -64
  396. package/dist/services/cron.mjs.map +0 -1
  397. package/dist/services/custom-fields.js +0 -10
  398. package/dist/services/custom-fields.js.map +0 -1
  399. package/dist/services/custom-fields.mjs +0 -11
  400. package/dist/services/custom-fields.mjs.map +0 -1
  401. package/dist/services/document-service/attributes/index.js +0 -22
  402. package/dist/services/document-service/attributes/index.js.map +0 -1
  403. package/dist/services/document-service/attributes/index.mjs +0 -22
  404. package/dist/services/document-service/attributes/index.mjs.map +0 -1
  405. package/dist/services/document-service/attributes/transforms.js +0 -20
  406. package/dist/services/document-service/attributes/transforms.js.map +0 -1
  407. package/dist/services/document-service/attributes/transforms.mjs +0 -19
  408. package/dist/services/document-service/attributes/transforms.mjs.map +0 -1
  409. package/dist/services/document-service/common.js +0 -7
  410. package/dist/services/document-service/common.js.map +0 -1
  411. package/dist/services/document-service/common.mjs +0 -7
  412. package/dist/services/document-service/common.mjs.map +0 -1
  413. package/dist/services/document-service/components.js +0 -288
  414. package/dist/services/document-service/components.js.map +0 -1
  415. package/dist/services/document-service/components.mjs +0 -286
  416. package/dist/services/document-service/components.mjs.map +0 -1
  417. package/dist/services/document-service/draft-and-publish.js +0 -69
  418. package/dist/services/document-service/draft-and-publish.js.map +0 -1
  419. package/dist/services/document-service/draft-and-publish.mjs +0 -69
  420. package/dist/services/document-service/draft-and-publish.mjs.map +0 -1
  421. package/dist/services/document-service/entries.js +0 -96
  422. package/dist/services/document-service/entries.js.map +0 -1
  423. package/dist/services/document-service/entries.mjs +0 -96
  424. package/dist/services/document-service/entries.mjs.map +0 -1
  425. package/dist/services/document-service/events.js +0 -47
  426. package/dist/services/document-service/events.js.map +0 -1
  427. package/dist/services/document-service/events.mjs +0 -47
  428. package/dist/services/document-service/events.mjs.map +0 -1
  429. package/dist/services/document-service/index.js +0 -35
  430. package/dist/services/document-service/index.js.map +0 -1
  431. package/dist/services/document-service/index.mjs +0 -35
  432. package/dist/services/document-service/index.mjs.map +0 -1
  433. package/dist/services/document-service/internationalization.js +0 -63
  434. package/dist/services/document-service/internationalization.js.map +0 -1
  435. package/dist/services/document-service/internationalization.mjs +0 -63
  436. package/dist/services/document-service/internationalization.mjs.map +0 -1
  437. package/dist/services/document-service/middlewares/errors.js +0 -25
  438. package/dist/services/document-service/middlewares/errors.js.map +0 -1
  439. package/dist/services/document-service/middlewares/errors.mjs +0 -25
  440. package/dist/services/document-service/middlewares/errors.mjs.map +0 -1
  441. package/dist/services/document-service/middlewares/middleware-manager.js +0 -49
  442. package/dist/services/document-service/middlewares/middleware-manager.js.map +0 -1
  443. package/dist/services/document-service/middlewares/middleware-manager.mjs +0 -49
  444. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +0 -1
  445. package/dist/services/document-service/params.js +0 -8
  446. package/dist/services/document-service/params.js.map +0 -1
  447. package/dist/services/document-service/params.mjs +0 -8
  448. package/dist/services/document-service/params.mjs.map +0 -1
  449. package/dist/services/document-service/repository.js +0 -328
  450. package/dist/services/document-service/repository.js.map +0 -1
  451. package/dist/services/document-service/repository.mjs +0 -328
  452. package/dist/services/document-service/repository.mjs.map +0 -1
  453. package/dist/services/document-service/transform/data.js +0 -15
  454. package/dist/services/document-service/transform/data.js.map +0 -1
  455. package/dist/services/document-service/transform/data.mjs +0 -15
  456. package/dist/services/document-service/transform/data.mjs.map +0 -1
  457. package/dist/services/document-service/transform/fields.js +0 -24
  458. package/dist/services/document-service/transform/fields.js.map +0 -1
  459. package/dist/services/document-service/transform/fields.mjs +0 -24
  460. package/dist/services/document-service/transform/fields.mjs.map +0 -1
  461. package/dist/services/document-service/transform/id-map.js +0 -78
  462. package/dist/services/document-service/transform/id-map.js.map +0 -1
  463. package/dist/services/document-service/transform/id-map.mjs +0 -78
  464. package/dist/services/document-service/transform/id-map.mjs.map +0 -1
  465. package/dist/services/document-service/transform/id-transform.js +0 -33
  466. package/dist/services/document-service/transform/id-transform.js.map +0 -1
  467. package/dist/services/document-service/transform/id-transform.mjs +0 -33
  468. package/dist/services/document-service/transform/id-transform.mjs.map +0 -1
  469. package/dist/services/document-service/transform/populate.js +0 -21
  470. package/dist/services/document-service/transform/populate.js.map +0 -1
  471. package/dist/services/document-service/transform/populate.mjs +0 -21
  472. package/dist/services/document-service/transform/populate.mjs.map +0 -1
  473. package/dist/services/document-service/transform/query.js +0 -9
  474. package/dist/services/document-service/transform/query.js.map +0 -1
  475. package/dist/services/document-service/transform/query.mjs +0 -9
  476. package/dist/services/document-service/transform/query.mjs.map +0 -1
  477. package/dist/services/document-service/transform/relations/extract/data-ids.js +0 -57
  478. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +0 -1
  479. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +0 -57
  480. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +0 -1
  481. package/dist/services/document-service/transform/relations/transform/data-ids.js +0 -76
  482. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +0 -1
  483. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +0 -76
  484. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +0 -1
  485. package/dist/services/document-service/transform/relations/transform/default-locale.js +0 -32
  486. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +0 -1
  487. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +0 -32
  488. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +0 -1
  489. package/dist/services/document-service/transform/relations/utils/dp.js +0 -30
  490. package/dist/services/document-service/transform/relations/utils/dp.js.map +0 -1
  491. package/dist/services/document-service/transform/relations/utils/dp.mjs +0 -30
  492. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +0 -1
  493. package/dist/services/document-service/transform/relations/utils/i18n.js +0 -25
  494. package/dist/services/document-service/transform/relations/utils/i18n.js.map +0 -1
  495. package/dist/services/document-service/transform/relations/utils/i18n.mjs +0 -25
  496. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +0 -1
  497. package/dist/services/document-service/transform/relations/utils/map-relation.js +0 -91
  498. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +0 -1
  499. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +0 -91
  500. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +0 -1
  501. package/dist/services/document-service/utils/populate.js +0 -47
  502. package/dist/services/document-service/utils/populate.js.map +0 -1
  503. package/dist/services/document-service/utils/populate.mjs +0 -47
  504. package/dist/services/document-service/utils/populate.mjs.map +0 -1
  505. package/dist/services/document-service/utils/unidirectional-relations.js +0 -69
  506. package/dist/services/document-service/utils/unidirectional-relations.js.map +0 -1
  507. package/dist/services/document-service/utils/unidirectional-relations.mjs +0 -69
  508. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +0 -1
  509. package/dist/services/entity-service/index.js +0 -169
  510. package/dist/services/entity-service/index.js.map +0 -1
  511. package/dist/services/entity-service/index.mjs +0 -167
  512. package/dist/services/entity-service/index.mjs.map +0 -1
  513. package/dist/services/entity-validator/blocks-validator.js +0 -128
  514. package/dist/services/entity-validator/blocks-validator.js.map +0 -1
  515. package/dist/services/entity-validator/blocks-validator.mjs +0 -128
  516. package/dist/services/entity-validator/blocks-validator.mjs.map +0 -1
  517. package/dist/services/entity-validator/index.js +0 -389
  518. package/dist/services/entity-validator/index.js.map +0 -1
  519. package/dist/services/entity-validator/index.mjs +0 -388
  520. package/dist/services/entity-validator/index.mjs.map +0 -1
  521. package/dist/services/entity-validator/validators.js +0 -241
  522. package/dist/services/entity-validator/validators.js.map +0 -1
  523. package/dist/services/entity-validator/validators.mjs +0 -239
  524. package/dist/services/entity-validator/validators.mjs.map +0 -1
  525. package/dist/services/errors.js +0 -76
  526. package/dist/services/errors.js.map +0 -1
  527. package/dist/services/errors.mjs +0 -74
  528. package/dist/services/errors.mjs.map +0 -1
  529. package/dist/services/event-hub.js +0 -72
  530. package/dist/services/event-hub.js.map +0 -1
  531. package/dist/services/event-hub.mjs +0 -73
  532. package/dist/services/event-hub.mjs.map +0 -1
  533. package/dist/services/features.js +0 -17
  534. package/dist/services/features.js.map +0 -1
  535. package/dist/services/features.mjs +0 -17
  536. package/dist/services/features.mjs.map +0 -1
  537. package/dist/services/fs.js +0 -51
  538. package/dist/services/fs.js.map +0 -1
  539. package/dist/services/fs.mjs +0 -49
  540. package/dist/services/fs.mjs.map +0 -1
  541. package/dist/services/metrics/admin-user-hash.js +0 -14
  542. package/dist/services/metrics/admin-user-hash.js.map +0 -1
  543. package/dist/services/metrics/admin-user-hash.mjs +0 -12
  544. package/dist/services/metrics/admin-user-hash.mjs.map +0 -1
  545. package/dist/services/metrics/index.js +0 -45
  546. package/dist/services/metrics/index.js.map +0 -1
  547. package/dist/services/metrics/index.mjs +0 -46
  548. package/dist/services/metrics/index.mjs.map +0 -1
  549. package/dist/services/metrics/is-truthy.js +0 -9
  550. package/dist/services/metrics/is-truthy.js.map +0 -1
  551. package/dist/services/metrics/is-truthy.mjs +0 -8
  552. package/dist/services/metrics/is-truthy.mjs.map +0 -1
  553. package/dist/services/metrics/middleware.js +0 -25
  554. package/dist/services/metrics/middleware.js.map +0 -1
  555. package/dist/services/metrics/middleware.mjs +0 -26
  556. package/dist/services/metrics/middleware.mjs.map +0 -1
  557. package/dist/services/metrics/rate-limiter.js +0 -21
  558. package/dist/services/metrics/rate-limiter.js.map +0 -1
  559. package/dist/services/metrics/rate-limiter.mjs +0 -22
  560. package/dist/services/metrics/rate-limiter.mjs.map +0 -1
  561. package/dist/services/metrics/sender.js +0 -76
  562. package/dist/services/metrics/sender.js.map +0 -1
  563. package/dist/services/metrics/sender.mjs +0 -70
  564. package/dist/services/metrics/sender.mjs.map +0 -1
  565. package/dist/services/query-params.js +0 -12
  566. package/dist/services/query-params.js.map +0 -1
  567. package/dist/services/query-params.mjs +0 -13
  568. package/dist/services/query-params.mjs.map +0 -1
  569. package/dist/services/reloader.js +0 -36
  570. package/dist/services/reloader.js.map +0 -1
  571. package/dist/services/reloader.mjs +0 -36
  572. package/dist/services/reloader.mjs.map +0 -1
  573. package/dist/services/request-context.js +0 -13
  574. package/dist/services/request-context.js.map +0 -1
  575. package/dist/services/request-context.mjs +0 -14
  576. package/dist/services/request-context.mjs.map +0 -1
  577. package/dist/services/server/admin-api.js +0 -13
  578. package/dist/services/server/admin-api.js.map +0 -1
  579. package/dist/services/server/admin-api.mjs +0 -13
  580. package/dist/services/server/admin-api.mjs.map +0 -1
  581. package/dist/services/server/api.js +0 -30
  582. package/dist/services/server/api.js.map +0 -1
  583. package/dist/services/server/api.mjs +0 -28
  584. package/dist/services/server/api.mjs.map +0 -1
  585. package/dist/services/server/compose-endpoint.js +0 -117
  586. package/dist/services/server/compose-endpoint.js.map +0 -1
  587. package/dist/services/server/compose-endpoint.mjs +0 -116
  588. package/dist/services/server/compose-endpoint.mjs.map +0 -1
  589. package/dist/services/server/content-api.js +0 -12
  590. package/dist/services/server/content-api.js.map +0 -1
  591. package/dist/services/server/content-api.mjs +0 -12
  592. package/dist/services/server/content-api.mjs.map +0 -1
  593. package/dist/services/server/http-server.js +0 -50
  594. package/dist/services/server/http-server.js.map +0 -1
  595. package/dist/services/server/http-server.mjs +0 -48
  596. package/dist/services/server/http-server.mjs.map +0 -1
  597. package/dist/services/server/index.js +0 -87
  598. package/dist/services/server/index.js.map +0 -1
  599. package/dist/services/server/index.mjs +0 -85
  600. package/dist/services/server/index.mjs.map +0 -1
  601. package/dist/services/server/koa.js +0 -52
  602. package/dist/services/server/koa.js.map +0 -1
  603. package/dist/services/server/koa.mjs +0 -48
  604. package/dist/services/server/koa.mjs.map +0 -1
  605. package/dist/services/server/middleware.js +0 -92
  606. package/dist/services/server/middleware.js.map +0 -1
  607. package/dist/services/server/middleware.mjs +0 -90
  608. package/dist/services/server/middleware.mjs.map +0 -1
  609. package/dist/services/server/policy.js +0 -20
  610. package/dist/services/server/policy.js.map +0 -1
  611. package/dist/services/server/policy.mjs +0 -20
  612. package/dist/services/server/policy.mjs.map +0 -1
  613. package/dist/services/server/register-middlewares.js +0 -72
  614. package/dist/services/server/register-middlewares.js.map +0 -1
  615. package/dist/services/server/register-middlewares.mjs +0 -73
  616. package/dist/services/server/register-middlewares.mjs.map +0 -1
  617. package/dist/services/server/register-routes.js +0 -76
  618. package/dist/services/server/register-routes.js.map +0 -1
  619. package/dist/services/server/register-routes.mjs +0 -75
  620. package/dist/services/server/register-routes.mjs.map +0 -1
  621. package/dist/services/server/routing.js +0 -91
  622. package/dist/services/server/routing.js.map +0 -1
  623. package/dist/services/server/routing.mjs +0 -89
  624. package/dist/services/server/routing.mjs.map +0 -1
  625. package/dist/services/utils/dynamic-zones.js +0 -17
  626. package/dist/services/utils/dynamic-zones.js.map +0 -1
  627. package/dist/services/utils/dynamic-zones.mjs +0 -18
  628. package/dist/services/utils/dynamic-zones.mjs.map +0 -1
  629. package/dist/services/webhook-runner.js +0 -133
  630. package/dist/services/webhook-runner.js.map +0 -1
  631. package/dist/services/webhook-runner.mjs +0 -131
  632. package/dist/services/webhook-runner.mjs.map +0 -1
  633. package/dist/services/webhook-store.js +0 -110
  634. package/dist/services/webhook-store.js.map +0 -1
  635. package/dist/services/webhook-store.mjs +0 -110
  636. package/dist/services/webhook-store.mjs.map +0 -1
  637. package/dist/services/worker-queue.js +0 -56
  638. package/dist/services/worker-queue.js.map +0 -1
  639. package/dist/services/worker-queue.mjs +0 -55
  640. package/dist/services/worker-queue.mjs.map +0 -1
  641. package/dist/utils/convert-custom-field-type.js +0 -24
  642. package/dist/utils/convert-custom-field-type.js.map +0 -1
  643. package/dist/utils/convert-custom-field-type.mjs +0 -24
  644. package/dist/utils/convert-custom-field-type.mjs.map +0 -1
  645. package/dist/utils/cron.js +0 -38
  646. package/dist/utils/cron.js.map +0 -1
  647. package/dist/utils/cron.mjs +0 -38
  648. package/dist/utils/cron.mjs.map +0 -1
  649. package/dist/utils/fetch.js +0 -21
  650. package/dist/utils/fetch.js.map +0 -1
  651. package/dist/utils/fetch.mjs +0 -21
  652. package/dist/utils/fetch.mjs.map +0 -1
  653. package/dist/utils/filepath-to-prop-path.js +0 -33
  654. package/dist/utils/filepath-to-prop-path.js.map +0 -1
  655. package/dist/utils/filepath-to-prop-path.mjs +0 -30
  656. package/dist/utils/filepath-to-prop-path.mjs.map +0 -1
  657. package/dist/utils/is-initialized.js +0 -16
  658. package/dist/utils/is-initialized.js.map +0 -1
  659. package/dist/utils/is-initialized.mjs +0 -16
  660. package/dist/utils/is-initialized.mjs.map +0 -1
  661. package/dist/utils/lifecycles.js +0 -9
  662. package/dist/utils/lifecycles.js.map +0 -1
  663. package/dist/utils/lifecycles.mjs +0 -9
  664. package/dist/utils/lifecycles.mjs.map +0 -1
  665. package/dist/utils/load-config-file.js +0 -45
  666. package/dist/utils/load-config-file.js.map +0 -1
  667. package/dist/utils/load-config-file.mjs +0 -42
  668. package/dist/utils/load-config-file.mjs.map +0 -1
  669. package/dist/utils/load-files.js +0 -39
  670. package/dist/utils/load-files.js.map +0 -1
  671. package/dist/utils/load-files.mjs +0 -35
  672. package/dist/utils/load-files.mjs.map +0 -1
  673. package/dist/utils/open-browser.js +0 -11
  674. package/dist/utils/open-browser.js.map +0 -1
  675. package/dist/utils/open-browser.mjs +0 -9
  676. package/dist/utils/open-browser.mjs.map +0 -1
  677. package/dist/utils/resolve-working-dirs.js +0 -13
  678. package/dist/utils/resolve-working-dirs.js.map +0 -1
  679. package/dist/utils/resolve-working-dirs.mjs +0 -11
  680. package/dist/utils/resolve-working-dirs.mjs.map +0 -1
  681. package/dist/utils/signals.js +0 -17
  682. package/dist/utils/signals.js.map +0 -1
  683. package/dist/utils/signals.mjs +0 -17
  684. package/dist/utils/signals.mjs.map +0 -1
  685. package/dist/utils/startup-logger.js +0 -81
  686. package/dist/utils/startup-logger.js.map +0 -1
  687. package/dist/utils/startup-logger.mjs +0 -77
  688. package/dist/utils/startup-logger.mjs.map +0 -1
  689. package/dist/utils/transform-content-types-to-models.js +0 -288
  690. package/dist/utils/transform-content-types-to-models.js.map +0 -1
  691. package/dist/utils/transform-content-types-to-models.mjs +0 -285
  692. package/dist/utils/transform-content-types-to-models.mjs.map +0 -1
  693. package/dist/utils/update-notifier/index.js +0 -85
  694. package/dist/utils/update-notifier/index.js.map +0 -1
  695. package/dist/utils/update-notifier/index.mjs +0 -78
  696. package/dist/utils/update-notifier/index.mjs.map +0 -1
@@ -1,30 +0,0 @@
1
- import { isNil } from "lodash/fp";
2
- import { contentTypes } from "@strapi/utils";
3
- const getRelationTargetStatus = (relation, opts) => {
4
- const targetContentType = strapi.getModel(opts.targetUid);
5
- const sourceContentType = strapi.getModel(opts.sourceUid);
6
- const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);
7
- const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);
8
- if (!targetHasDP) {
9
- return ["published"];
10
- }
11
- if (sourceHasDP && !isNil(opts.sourceStatus)) {
12
- return [opts.sourceStatus];
13
- }
14
- if (relation.status) {
15
- switch (relation.status) {
16
- case "published":
17
- return ["published"];
18
- default:
19
- return ["draft"];
20
- }
21
- }
22
- if (!sourceHasDP) {
23
- return ["draft", "published"];
24
- }
25
- return ["draft"];
26
- };
27
- export {
28
- getRelationTargetStatus
29
- };
30
- //# sourceMappingURL=dp.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"dp.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/dp.ts"],"sourcesContent":["import { isNil } from 'lodash/fp';\n\nimport { contentTypes } from '@strapi/utils';\nimport { UID } from '@strapi/types';\n\nimport { LongHandDocument } from './types';\n\ntype Status = 'draft' | 'published';\n\nexport const getRelationTargetStatus = (\n relation: Pick<LongHandDocument, 'documentId' | 'status'>,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceStatus?: Status;\n }\n): Status[] => {\n // Ignore if the target content type does not have draft and publish enabled\n const targetContentType = strapi.getModel(opts.targetUid);\n const sourceContentType = strapi.getModel(opts.sourceUid);\n\n const targetHasDP = contentTypes.hasDraftAndPublish(targetContentType);\n const sourceHasDP = contentTypes.hasDraftAndPublish(sourceContentType);\n\n if (!targetHasDP) {\n return ['published'];\n }\n\n /**\n * If both source and target have DP enabled,\n * connect it to the same status as the source status\n */\n if (sourceHasDP && !isNil(opts.sourceStatus)) {\n return [opts.sourceStatus];\n }\n\n /**\n * Use the status from the relation if it's set\n */\n if (relation.status) {\n switch (relation.status) {\n case 'published':\n return ['published'];\n default:\n // Default to draft if it's an invalid status (e.g. modified)\n return ['draft'];\n }\n }\n\n /**\n * If DP is disabled and relation does not specify any status\n * Connect to both draft and published versions\n */\n if (!sourceHasDP) {\n return ['draft', 'published'];\n }\n\n // Default to draft as a fallback\n return ['draft'];\n};\n"],"names":[],"mappings":";;AASa,MAAA,0BAA0B,CACrC,UACA,SAKa;AAEb,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AACxD,QAAM,oBAAoB,OAAO,SAAS,KAAK,SAAS;AAElD,QAAA,cAAc,aAAa,mBAAmB,iBAAiB;AAC/D,QAAA,cAAc,aAAa,mBAAmB,iBAAiB;AAErE,MAAI,CAAC,aAAa;AAChB,WAAO,CAAC,WAAW;AAAA,EACrB;AAMA,MAAI,eAAe,CAAC,MAAM,KAAK,YAAY,GAAG;AACrC,WAAA,CAAC,KAAK,YAAY;AAAA,EAC3B;AAKA,MAAI,SAAS,QAAQ;AACnB,YAAQ,SAAS,QAAQ;AAAA,MACvB,KAAK;AACH,eAAO,CAAC,WAAW;AAAA,MACrB;AAEE,eAAO,CAAC,OAAO;AAAA,IACnB;AAAA,EACF;AAMA,MAAI,CAAC,aAAa;AACT,WAAA,CAAC,SAAS,WAAW;AAAA,EAC9B;AAGA,SAAO,CAAC,OAAO;AACjB;"}
@@ -1,25 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const isLocalizedContentType = (uid) => {
4
- const model = strapi.getModel(uid);
5
- return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
6
- };
7
- const getDefaultLocale = () => {
8
- return strapi.plugin("i18n").service("locales").getDefaultLocale();
9
- };
10
- const getRelationTargetLocale = (relation, opts) => {
11
- const targetLocale = relation.locale || opts.sourceLocale;
12
- const isTargetLocalized = isLocalizedContentType(opts.targetUid);
13
- const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
14
- if (isSourceLocalized && isTargetLocalized) {
15
- return opts.sourceLocale;
16
- }
17
- if (isTargetLocalized) {
18
- return targetLocale;
19
- }
20
- return null;
21
- };
22
- exports.getDefaultLocale = getDefaultLocale;
23
- exports.getRelationTargetLocale = getRelationTargetLocale;
24
- exports.isLocalizedContentType = isLocalizedContentType;
25
- //# sourceMappingURL=i18n.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { UID } from '@strapi/types';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const targetLocale = relation.locale || opts.sourceLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Both source and target locales should match\n if (isSourceLocalized && isTargetLocalized) {\n return opts.sourceLocale;\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":[],"mappings":";;AAGa,MAAA,yBAAyB,CAAC,QAAoB;AACnD,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AACpC,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACG,QAAA,eAAe,SAAS,UAAU,KAAK;AAEvC,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAC1C,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;;;;"}
@@ -1,25 +0,0 @@
1
- const isLocalizedContentType = (uid) => {
2
- const model = strapi.getModel(uid);
3
- return strapi.plugin("i18n").service("content-types").isLocalizedContentType(model);
4
- };
5
- const getDefaultLocale = () => {
6
- return strapi.plugin("i18n").service("locales").getDefaultLocale();
7
- };
8
- const getRelationTargetLocale = (relation, opts) => {
9
- const targetLocale = relation.locale || opts.sourceLocale;
10
- const isTargetLocalized = isLocalizedContentType(opts.targetUid);
11
- const isSourceLocalized = isLocalizedContentType(opts.sourceUid);
12
- if (isSourceLocalized && isTargetLocalized) {
13
- return opts.sourceLocale;
14
- }
15
- if (isTargetLocalized) {
16
- return targetLocale;
17
- }
18
- return null;
19
- };
20
- export {
21
- getDefaultLocale,
22
- getRelationTargetLocale,
23
- isLocalizedContentType
24
- };
25
- //# sourceMappingURL=i18n.mjs.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"i18n.mjs","sources":["../../../../../../src/services/document-service/transform/relations/utils/i18n.ts"],"sourcesContent":["import { UID } from '@strapi/types';\nimport { LongHandDocument } from './types';\n\nexport const isLocalizedContentType = (uid: UID.Schema) => {\n const model = strapi.getModel(uid);\n return strapi.plugin('i18n').service('content-types').isLocalizedContentType(model);\n};\n\nexport const getDefaultLocale = () => {\n return strapi.plugin('i18n').service('locales').getDefaultLocale();\n};\n\nexport const getRelationTargetLocale = (\n relation: LongHandDocument,\n opts: {\n targetUid: UID.Schema;\n sourceUid: UID.Schema;\n sourceLocale?: string | null;\n }\n) => {\n const targetLocale = relation.locale || opts.sourceLocale;\n\n const isTargetLocalized = isLocalizedContentType(opts.targetUid);\n const isSourceLocalized = isLocalizedContentType(opts.sourceUid);\n\n // Both source and target locales should match\n if (isSourceLocalized && isTargetLocalized) {\n return opts.sourceLocale;\n }\n\n if (isTargetLocalized) {\n return targetLocale;\n }\n\n return null;\n};\n"],"names":[],"mappings":"AAGa,MAAA,yBAAyB,CAAC,QAAoB;AACnD,QAAA,QAAQ,OAAO,SAAS,GAAG;AAC1B,SAAA,OAAO,OAAO,MAAM,EAAE,QAAQ,eAAe,EAAE,uBAAuB,KAAK;AACpF;AAEO,MAAM,mBAAmB,MAAM;AACpC,SAAO,OAAO,OAAO,MAAM,EAAE,QAAQ,SAAS,EAAE;AAClD;AAEa,MAAA,0BAA0B,CACrC,UACA,SAKG;AACG,QAAA,eAAe,SAAS,UAAU,KAAK;AAEvC,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AACzD,QAAA,oBAAoB,uBAAuB,KAAK,SAAS;AAG/D,MAAI,qBAAqB,mBAAmB;AAC1C,WAAO,KAAK;AAAA,EACd;AAEA,MAAI,mBAAmB;AACd,WAAA;AAAA,EACT;AAEO,SAAA;AACT;"}
@@ -1,91 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fp = require("lodash/fp");
4
- const strapiUtils = require("@strapi/utils");
5
- const isNumeric = (value) => {
6
- if (Array.isArray(value))
7
- return false;
8
- const parsed = parseInt(value, 10);
9
- return !Number.isNaN(parsed);
10
- };
11
- const toArray = (value) => {
12
- if (fp.isNil(value))
13
- return value;
14
- if (Array.isArray(value))
15
- return value;
16
- return [value];
17
- };
18
- const mapRelation = async (callback, rel, isRecursive = false) => {
19
- let relation = rel;
20
- const wrapInSet = (value) => {
21
- if (isRecursive) {
22
- return value;
23
- }
24
- return { set: toArray(value) };
25
- };
26
- if (fp.isNil(relation)) {
27
- return callback(relation);
28
- }
29
- if (Array.isArray(relation)) {
30
- return strapiUtils.async.map(relation, (r) => mapRelation(callback, r, true)).then((result) => result.flat().filter(Boolean)).then(wrapInSet);
31
- }
32
- if (fp.isObject(relation)) {
33
- if ("id" in relation || "documentId" in relation) {
34
- const result = await callback(relation);
35
- return wrapInSet(result);
36
- }
37
- if (!relation.set && !relation.disconnect && !relation.connect) {
38
- return callback(relation);
39
- }
40
- if (relation.set) {
41
- const set = await mapRelation(callback, relation.set, true);
42
- relation = { ...relation, set: toArray(set) };
43
- }
44
- if (relation.disconnect) {
45
- const disconnect = await mapRelation(callback, relation.disconnect, true);
46
- relation = { ...relation, disconnect: toArray(disconnect) };
47
- }
48
- if (relation.connect) {
49
- const connect = await mapRelation(callback, relation.connect, true);
50
- relation = { ...relation, connect: toArray(connect) };
51
- }
52
- return relation;
53
- }
54
- if (isNumeric(relation)) {
55
- const result = await callback({ id: relation });
56
- return wrapInSet(result);
57
- }
58
- if (typeof relation === "string") {
59
- const result = await callback({ documentId: relation });
60
- return wrapInSet(result);
61
- }
62
- return callback(relation);
63
- };
64
- const traverseEntityRelations = async (visitor, options, data) => {
65
- return strapiUtils.traverseEntity(
66
- async (options2, utils) => {
67
- const { attribute } = options2;
68
- if (!attribute) {
69
- return;
70
- }
71
- if (attribute.type !== "relation") {
72
- return;
73
- }
74
- if (attribute.useJoinTable === false) {
75
- return;
76
- }
77
- const target = attribute.target;
78
- if (!target) {
79
- return;
80
- }
81
- return visitor(options2, utils);
82
- },
83
- options,
84
- data
85
- );
86
- };
87
- const mapRelationCurried = fp.curry(mapRelation);
88
- const traverseEntityRelationsCurried = fp.curry(traverseEntityRelations);
89
- exports.mapRelation = mapRelationCurried;
90
- exports.traverseEntityRelations = traverseEntityRelationsCurried;
91
- //# sourceMappingURL=map-relation.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"map-relation.js","sources":["../../../../../../src/services/document-service/transform/relations/utils/map-relation.ts"],"sourcesContent":["/* eslint-disable node/no-callback-literal */\nimport { isObject, curry, isNil } from 'lodash/fp';\n\nimport type { UID } from '@strapi/types';\nimport { traverseEntity, async } from '@strapi/utils';\n\nimport { Relation } from './types';\n\nconst isNumeric = (value: any): value is number => {\n if (Array.isArray(value)) return false; // Handle [1, 'docId'] case\n const parsed = parseInt(value, 10);\n return !Number.isNaN(parsed);\n};\n\nconst toArray = (value: any) => {\n // Keep value as it is if it's a nullish value\n if (isNil(value)) return value;\n if (Array.isArray(value)) return value;\n\n return [value];\n};\n\n/**\n * There are multiple ways to create Strapi relations.\n * This is a utility to traverse and transform relation data\n *\n *\n * For consistency and ease of use, the response will always be an object with the following shape:\n * { set: [{...}], connect: [{...}], disconnect: [{...}] }\n *\n * @example\n * transformRelationData({\n * onLongHand: (relation) => {\n * // Change the id of the relation\n * return { id: 'other' };\n * },\n * }, relation)\n */\nconst mapRelation = async (\n callback: (relation: any) => any,\n rel: Relation,\n isRecursive = false\n): Promise<Relation> => {\n let relation: Relation = rel;\n\n const wrapInSet = (value: any) => {\n // Ignore wrapping if it's a recursive call\n if (isRecursive) {\n return value;\n }\n return { set: toArray(value) };\n };\n\n // undefined | null\n if (isNil(relation)) {\n return callback(relation);\n }\n\n // LongHand[] | ShortHand[]\n if (Array.isArray(relation)) {\n return async\n .map(relation, (r: Relation) => mapRelation(callback, r, true))\n .then((result: any) => result.flat().filter(Boolean))\n .then(wrapInSet);\n }\n\n // LongHand\n if (isObject(relation)) {\n // { id: 1 } || { documentId: 1 }\n if ('id' in relation || 'documentId' in relation) {\n const result = await callback(relation);\n return wrapInSet(result);\n }\n\n // If not connecting anything, return default visitor\n if (!relation.set && !relation.disconnect && !relation.connect) {\n return callback(relation);\n }\n\n // { set }\n if (relation.set) {\n const set: any = await mapRelation(callback, relation.set, true);\n relation = { ...relation, set: toArray(set) };\n }\n\n // { disconnect}\n if (relation.disconnect) {\n const disconnect: any = await mapRelation(callback, relation.disconnect, true);\n relation = { ...relation, disconnect: toArray(disconnect) };\n }\n\n // { connect }\n if (relation.connect) {\n // Transform the relation to connect\n const connect: any = await mapRelation(callback, relation.connect, true);\n relation = { ...relation, connect: toArray(connect) };\n }\n\n return relation;\n }\n\n // ShortHand\n if (isNumeric(relation)) {\n const result = await callback({ id: relation });\n return wrapInSet(result);\n }\n\n if (typeof relation === 'string') {\n const result = await callback({ documentId: relation });\n return wrapInSet(result);\n }\n\n // Anything else\n return callback(relation);\n};\n\ntype TraverseEntity = Parameters<typeof traverseEntity>;\n\n/**\n * Utility function, same as `traverseEntity` but only for relations.\n */\nconst traverseEntityRelations = async (\n visitor: TraverseEntity[0],\n options: TraverseEntity[1],\n data: TraverseEntity[2]\n) => {\n return traverseEntity(\n async (options, utils) => {\n const { attribute } = options;\n\n if (!attribute) {\n return;\n }\n\n if (attribute.type !== 'relation') {\n return;\n }\n\n // TODO: Handle join columns\n if (attribute.useJoinTable === false) {\n return;\n }\n\n // TODO: Handle morph relations (they have multiple targets)\n const target = attribute.target as UID.Schema | undefined;\n if (!target) {\n return;\n }\n\n return visitor(options, utils);\n },\n options,\n data\n );\n};\n\nconst mapRelationCurried = curry(mapRelation);\nconst traverseEntityRelationsCurried = curry(traverseEntityRelations);\n\nexport {\n mapRelationCurried as mapRelation,\n traverseEntityRelationsCurried as traverseEntityRelations,\n};\n"],"names":["isNil","async","isObject","traverseEntity","options","curry"],"mappings":";;;;AAQA,MAAM,YAAY,CAAC,UAAgC;AAC7C,MAAA,MAAM,QAAQ,KAAK;AAAU,WAAA;AAC3B,QAAA,SAAS,SAAS,OAAO,EAAE;AAC1B,SAAA,CAAC,OAAO,MAAM,MAAM;AAC7B;AAEA,MAAM,UAAU,CAAC,UAAe;AAE9B,MAAIA,GAAAA,MAAM,KAAK;AAAU,WAAA;AACrB,MAAA,MAAM,QAAQ,KAAK;AAAU,WAAA;AAEjC,SAAO,CAAC,KAAK;AACf;AAkBA,MAAM,cAAc,OAClB,UACA,KACA,cAAc,UACQ;AACtB,MAAI,WAAqB;AAEnB,QAAA,YAAY,CAAC,UAAe;AAEhC,QAAI,aAAa;AACR,aAAA;AAAA,IACT;AACA,WAAO,EAAE,KAAK,QAAQ,KAAK,EAAE;AAAA,EAAA;AAI3B,MAAAA,GAAAA,MAAM,QAAQ,GAAG;AACnB,WAAO,SAAS,QAAQ;AAAA,EAC1B;AAGI,MAAA,MAAM,QAAQ,QAAQ,GAAG;AACpB,WAAAC,YAAA,MACJ,IAAI,UAAU,CAAC,MAAgB,YAAY,UAAU,GAAG,IAAI,CAAC,EAC7D,KAAK,CAAC,WAAgB,OAAO,OAAO,OAAO,OAAO,CAAC,EACnD,KAAK,SAAS;AAAA,EACnB;AAGI,MAAAC,GAAAA,SAAS,QAAQ,GAAG;AAElB,QAAA,QAAQ,YAAY,gBAAgB,UAAU;AAC1C,YAAA,SAAS,MAAM,SAAS,QAAQ;AACtC,aAAO,UAAU,MAAM;AAAA,IACzB;AAGI,QAAA,CAAC,SAAS,OAAO,CAAC,SAAS,cAAc,CAAC,SAAS,SAAS;AAC9D,aAAO,SAAS,QAAQ;AAAA,IAC1B;AAGA,QAAI,SAAS,KAAK;AAChB,YAAM,MAAW,MAAM,YAAY,UAAU,SAAS,KAAK,IAAI;AAC/D,iBAAW,EAAE,GAAG,UAAU,KAAK,QAAQ,GAAG;IAC5C;AAGA,QAAI,SAAS,YAAY;AACvB,YAAM,aAAkB,MAAM,YAAY,UAAU,SAAS,YAAY,IAAI;AAC7E,iBAAW,EAAE,GAAG,UAAU,YAAY,QAAQ,UAAU;IAC1D;AAGA,QAAI,SAAS,SAAS;AAEpB,YAAM,UAAe,MAAM,YAAY,UAAU,SAAS,SAAS,IAAI;AACvE,iBAAW,EAAE,GAAG,UAAU,SAAS,QAAQ,OAAO;IACpD;AAEO,WAAA;AAAA,EACT;AAGI,MAAA,UAAU,QAAQ,GAAG;AACvB,UAAM,SAAS,MAAM,SAAS,EAAE,IAAI,SAAU,CAAA;AAC9C,WAAO,UAAU,MAAM;AAAA,EACzB;AAEI,MAAA,OAAO,aAAa,UAAU;AAChC,UAAM,SAAS,MAAM,SAAS,EAAE,YAAY,SAAU,CAAA;AACtD,WAAO,UAAU,MAAM;AAAA,EACzB;AAGA,SAAO,SAAS,QAAQ;AAC1B;AAOA,MAAM,0BAA0B,OAC9B,SACA,SACA,SACG;AACI,SAAAC,YAAA;AAAA,IACL,OAAOC,UAAS,UAAU;AAClB,YAAA,EAAE,UAAcA,IAAAA;AAEtB,UAAI,CAAC,WAAW;AACd;AAAA,MACF;AAEI,UAAA,UAAU,SAAS,YAAY;AACjC;AAAA,MACF;AAGI,UAAA,UAAU,iBAAiB,OAAO;AACpC;AAAA,MACF;AAGA,YAAM,SAAS,UAAU;AACzB,UAAI,CAAC,QAAQ;AACX;AAAA,MACF;AAEO,aAAA,QAAQA,UAAS,KAAK;AAAA,IAC/B;AAAA,IACA;AAAA,IACA;AAAA,EAAA;AAEJ;AAEM,MAAA,qBAAqBC,SAAM,WAAW;AACtC,MAAA,iCAAiCA,SAAM,uBAAuB;;;"}
@@ -1,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,69 +0,0 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const fp = require("lodash/fp");
4
- const load = async (uid, { oldVersions, newVersions }) => {
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" || attribute.target !== uid || attribute.inversedBy || attribute.mappedBy) {
13
- continue;
14
- }
15
- const joinTable = attribute.joinTable;
16
- if (!joinTable) {
17
- continue;
18
- }
19
- const { name: sourceColumnName } = joinTable.joinColumn;
20
- const { name: targetColumnName } = joinTable.inverseJoinColumn;
21
- const ids = oldVersions.map((entry) => entry.id);
22
- const oldVersionsRelations = await strapi.db.getConnection().select("*").from(joinTable.name).whereIn(targetColumnName, ids).transacting(trx);
23
- if (oldVersionsRelations.length > 0) {
24
- updates.push({ joinTable, relations: oldVersionsRelations });
25
- }
26
- if (!model.options?.draftAndPublish) {
27
- const ids2 = newVersions.map((entry) => entry.id);
28
- const newVersionsRelations = await strapi.db.getConnection().select("*").from(joinTable.name).whereIn(targetColumnName, ids2).transacting(trx);
29
- if (newVersionsRelations.length > 0) {
30
- const discardToAdd = newVersionsRelations.filter((relation) => {
31
- const matchingOldVerion = oldVersionsRelations.find((oldRelation) => {
32
- return oldRelation[sourceColumnName] === relation[sourceColumnName];
33
- });
34
- return !matchingOldVerion;
35
- }).map(fp.omit("id"));
36
- updates.push({ joinTable, relations: discardToAdd });
37
- }
38
- }
39
- }
40
- }
41
- });
42
- return updates;
43
- };
44
- const sync = async (oldEntries, newEntries, oldRelations) => {
45
- const newEntryByLocale = fp.keyBy("locale", newEntries);
46
- const oldEntriesMap = oldEntries.reduce(
47
- (acc, entry) => {
48
- const newEntry = newEntryByLocale[entry.locale];
49
- if (!newEntry)
50
- return acc;
51
- acc[entry.id] = newEntry.id;
52
- return acc;
53
- },
54
- {}
55
- );
56
- await strapi.db.transaction(async ({ trx }) => {
57
- for (const { joinTable, relations } of oldRelations) {
58
- const column = joinTable.inverseJoinColumn.name;
59
- const newRelations = relations.map((relation) => {
60
- const newId = oldEntriesMap[relation[column]];
61
- return { ...relation, [column]: newId };
62
- });
63
- await trx.batchInsert(joinTable.name, newRelations, 1e3);
64
- }
65
- });
66
- };
67
- exports.load = load;
68
- exports.sync = sync;
69
- //# 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, omit } from 'lodash/fp';\n\nimport { UID, Schema } from '@strapi/types';\n\ninterface LoadContext {\n oldVersions: { id: string; locale: string }[];\n newVersions: { id: string; locale: string }[];\n}\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 */\nconst load = async (uid: UID.ContentType, { oldVersions, newVersions }: LoadContext) => {\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 (\n attribute.type !== 'relation' ||\n attribute.target !== uid ||\n attribute.inversedBy ||\n attribute.mappedBy\n ) {\n continue;\n }\n\n // TODO: joinColumn relations\n const joinTable = attribute.joinTable;\n if (!joinTable) {\n continue;\n }\n\n const { name: sourceColumnName } = joinTable.joinColumn;\n const { name: targetColumnName } = joinTable.inverseJoinColumn;\n\n /**\n * Load all relations that need to be updated\n */\n // NOTE: when the model has draft and publish, we can assume relation are only draft to draft & published to published\n const ids = oldVersions.map((entry) => entry.id);\n\n const oldVersionsRelations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(targetColumnName, ids)\n .transacting(trx);\n\n if (oldVersionsRelations.length > 0) {\n updates.push({ joinTable, relations: oldVersionsRelations });\n }\n\n /**\n * if publishing\n * if published version exists\n * updated published versions links\n * else\n * create link to newly published version\n *\n * if discarding\n * if published version link exists & not draft version link\n * create link to new draft version\n */\n\n if (!model.options?.draftAndPublish) {\n const ids = newVersions.map((entry) => entry.id);\n\n const newVersionsRelations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(targetColumnName, ids)\n .transacting(trx);\n\n if (newVersionsRelations.length > 0) {\n // when publishing a draft that doesn't have a published version yet,\n // copy the links to the draft over to the published version\n // when discarding a published version, if no drafts exists\n const discardToAdd = newVersionsRelations\n .filter((relation) => {\n const matchingOldVerion = oldVersionsRelations.find((oldRelation) => {\n return oldRelation[sourceColumnName] === relation[sourceColumnName];\n });\n\n return !matchingOldVerion;\n })\n .map(omit('id'));\n\n updates.push({ joinTable, relations: discardToAdd });\n }\n }\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 // 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 column = joinTable.inverseJoinColumn.name;\n\n const newRelations = relations.map((relation) => {\n const newId = oldEntriesMap[relation[column]];\n return { ...relation, [column]: newId };\n });\n\n // Insert those relations into the join table\n await trx.batchInsert(joinTable.name, newRelations, 1000);\n }\n });\n};\n\nexport { load, sync };\n"],"names":["ids","omit","keyBy"],"mappings":";;;AAeA,MAAM,OAAO,OAAO,KAAsB,EAAE,aAAa,kBAA+B;AACtF,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;AAK9D,YAAA,UAAU,SAAS,cACnB,UAAU,WAAW,OACrB,UAAU,cACV,UAAU,UACV;AACA;AAAA,QACF;AAGA,cAAM,YAAY,UAAU;AAC5B,YAAI,CAAC,WAAW;AACd;AAAA,QACF;AAEA,cAAM,EAAE,MAAM,qBAAqB,UAAU;AAC7C,cAAM,EAAE,MAAM,qBAAqB,UAAU;AAM7C,cAAM,MAAM,YAAY,IAAI,CAAC,UAAU,MAAM,EAAE;AAE/C,cAAM,uBAAuB,MAAM,OAAO,GACvC,gBACA,OAAO,GAAG,EACV,KAAK,UAAU,IAAI,EACnB,QAAQ,kBAAkB,GAAG,EAC7B,YAAY,GAAG;AAEd,YAAA,qBAAqB,SAAS,GAAG;AACnC,kBAAQ,KAAK,EAAE,WAAW,WAAW,qBAAsB,CAAA;AAAA,QAC7D;AAcI,YAAA,CAAC,MAAM,SAAS,iBAAiB;AACnC,gBAAMA,OAAM,YAAY,IAAI,CAAC,UAAU,MAAM,EAAE;AAE/C,gBAAM,uBAAuB,MAAM,OAAO,GACvC,gBACA,OAAO,GAAG,EACV,KAAK,UAAU,IAAI,EACnB,QAAQ,kBAAkBA,IAAG,EAC7B,YAAY,GAAG;AAEd,cAAA,qBAAqB,SAAS,GAAG;AAInC,kBAAM,eAAe,qBAClB,OAAO,CAAC,aAAa;AACpB,oBAAM,oBAAoB,qBAAqB,KAAK,CAAC,gBAAgB;AACnE,uBAAO,YAAY,gBAAgB,MAAM,SAAS,gBAAgB;AAAA,cAAA,CACnE;AAED,qBAAO,CAAC;AAAA,YACT,CAAA,EACA,IAAIC,QAAK,IAAI,CAAC;AAEjB,oBAAQ,KAAK,EAAE,WAAW,WAAW,aAAc,CAAA;AAAA,UACrD;AAAA,QACF;AAAA,MACF;AAAA,IACF;AAAA,EAAA,CACD;AAEM,SAAA;AACT;AASA,MAAM,OAAO,OACX,YACA,YACA,iBACG;AAMG,QAAA,mBAAmBC,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;AAE7C,eAAW,EAAE,WAAW,UAAU,KAAK,cAAc;AAE7C,YAAA,SAAS,UAAU,kBAAkB;AAE3C,YAAM,eAAe,UAAU,IAAI,CAAC,aAAa;AAC/C,cAAM,QAAQ,cAAc,SAAS,MAAM,CAAC;AAC5C,eAAO,EAAE,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM;AAAA,MAAA,CACvC;AAGD,YAAM,IAAI,YAAY,UAAU,MAAM,cAAc,GAAI;AAAA,IAC1D;AAAA,EAAA,CACD;AACH;;;"}
@@ -1,69 +0,0 @@
1
- import { omit, keyBy } from "lodash/fp";
2
- const load = async (uid, { oldVersions, newVersions }) => {
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" || attribute.target !== uid || attribute.inversedBy || attribute.mappedBy) {
11
- continue;
12
- }
13
- const joinTable = attribute.joinTable;
14
- if (!joinTable) {
15
- continue;
16
- }
17
- const { name: sourceColumnName } = joinTable.joinColumn;
18
- const { name: targetColumnName } = joinTable.inverseJoinColumn;
19
- const ids = oldVersions.map((entry) => entry.id);
20
- const oldVersionsRelations = await strapi.db.getConnection().select("*").from(joinTable.name).whereIn(targetColumnName, ids).transacting(trx);
21
- if (oldVersionsRelations.length > 0) {
22
- updates.push({ joinTable, relations: oldVersionsRelations });
23
- }
24
- if (!model.options?.draftAndPublish) {
25
- const ids2 = newVersions.map((entry) => entry.id);
26
- const newVersionsRelations = await strapi.db.getConnection().select("*").from(joinTable.name).whereIn(targetColumnName, ids2).transacting(trx);
27
- if (newVersionsRelations.length > 0) {
28
- const discardToAdd = newVersionsRelations.filter((relation) => {
29
- const matchingOldVerion = oldVersionsRelations.find((oldRelation) => {
30
- return oldRelation[sourceColumnName] === relation[sourceColumnName];
31
- });
32
- return !matchingOldVerion;
33
- }).map(omit("id"));
34
- updates.push({ joinTable, relations: discardToAdd });
35
- }
36
- }
37
- }
38
- }
39
- });
40
- return updates;
41
- };
42
- const sync = async (oldEntries, newEntries, oldRelations) => {
43
- const newEntryByLocale = keyBy("locale", newEntries);
44
- const oldEntriesMap = oldEntries.reduce(
45
- (acc, entry) => {
46
- const newEntry = newEntryByLocale[entry.locale];
47
- if (!newEntry)
48
- return acc;
49
- acc[entry.id] = newEntry.id;
50
- return acc;
51
- },
52
- {}
53
- );
54
- await strapi.db.transaction(async ({ trx }) => {
55
- for (const { joinTable, relations } of oldRelations) {
56
- const column = joinTable.inverseJoinColumn.name;
57
- const newRelations = relations.map((relation) => {
58
- const newId = oldEntriesMap[relation[column]];
59
- return { ...relation, [column]: newId };
60
- });
61
- await trx.batchInsert(joinTable.name, newRelations, 1e3);
62
- }
63
- });
64
- };
65
- export {
66
- load,
67
- sync
68
- };
69
- //# 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, omit } from 'lodash/fp';\n\nimport { UID, Schema } from '@strapi/types';\n\ninterface LoadContext {\n oldVersions: { id: string; locale: string }[];\n newVersions: { id: string; locale: string }[];\n}\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 */\nconst load = async (uid: UID.ContentType, { oldVersions, newVersions }: LoadContext) => {\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 (\n attribute.type !== 'relation' ||\n attribute.target !== uid ||\n attribute.inversedBy ||\n attribute.mappedBy\n ) {\n continue;\n }\n\n // TODO: joinColumn relations\n const joinTable = attribute.joinTable;\n if (!joinTable) {\n continue;\n }\n\n const { name: sourceColumnName } = joinTable.joinColumn;\n const { name: targetColumnName } = joinTable.inverseJoinColumn;\n\n /**\n * Load all relations that need to be updated\n */\n // NOTE: when the model has draft and publish, we can assume relation are only draft to draft & published to published\n const ids = oldVersions.map((entry) => entry.id);\n\n const oldVersionsRelations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(targetColumnName, ids)\n .transacting(trx);\n\n if (oldVersionsRelations.length > 0) {\n updates.push({ joinTable, relations: oldVersionsRelations });\n }\n\n /**\n * if publishing\n * if published version exists\n * updated published versions links\n * else\n * create link to newly published version\n *\n * if discarding\n * if published version link exists & not draft version link\n * create link to new draft version\n */\n\n if (!model.options?.draftAndPublish) {\n const ids = newVersions.map((entry) => entry.id);\n\n const newVersionsRelations = await strapi.db\n .getConnection()\n .select('*')\n .from(joinTable.name)\n .whereIn(targetColumnName, ids)\n .transacting(trx);\n\n if (newVersionsRelations.length > 0) {\n // when publishing a draft that doesn't have a published version yet,\n // copy the links to the draft over to the published version\n // when discarding a published version, if no drafts exists\n const discardToAdd = newVersionsRelations\n .filter((relation) => {\n const matchingOldVerion = oldVersionsRelations.find((oldRelation) => {\n return oldRelation[sourceColumnName] === relation[sourceColumnName];\n });\n\n return !matchingOldVerion;\n })\n .map(omit('id'));\n\n updates.push({ joinTable, relations: discardToAdd });\n }\n }\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 // 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 column = joinTable.inverseJoinColumn.name;\n\n const newRelations = relations.map((relation) => {\n const newId = oldEntriesMap[relation[column]];\n return { ...relation, [column]: newId };\n });\n\n // Insert those relations into the join table\n await trx.batchInsert(joinTable.name, newRelations, 1000);\n }\n });\n};\n\nexport { load, sync };\n"],"names":["ids"],"mappings":";AAeA,MAAM,OAAO,OAAO,KAAsB,EAAE,aAAa,kBAA+B;AACtF,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;AAK9D,YAAA,UAAU,SAAS,cACnB,UAAU,WAAW,OACrB,UAAU,cACV,UAAU,UACV;AACA;AAAA,QACF;AAGA,cAAM,YAAY,UAAU;AAC5B,YAAI,CAAC,WAAW;AACd;AAAA,QACF;AAEA,cAAM,EAAE,MAAM,qBAAqB,UAAU;AAC7C,cAAM,EAAE,MAAM,qBAAqB,UAAU;AAM7C,cAAM,MAAM,YAAY,IAAI,CAAC,UAAU,MAAM,EAAE;AAE/C,cAAM,uBAAuB,MAAM,OAAO,GACvC,gBACA,OAAO,GAAG,EACV,KAAK,UAAU,IAAI,EACnB,QAAQ,kBAAkB,GAAG,EAC7B,YAAY,GAAG;AAEd,YAAA,qBAAqB,SAAS,GAAG;AACnC,kBAAQ,KAAK,EAAE,WAAW,WAAW,qBAAsB,CAAA;AAAA,QAC7D;AAcI,YAAA,CAAC,MAAM,SAAS,iBAAiB;AACnC,gBAAMA,OAAM,YAAY,IAAI,CAAC,UAAU,MAAM,EAAE;AAE/C,gBAAM,uBAAuB,MAAM,OAAO,GACvC,gBACA,OAAO,GAAG,EACV,KAAK,UAAU,IAAI,EACnB,QAAQ,kBAAkBA,IAAG,EAC7B,YAAY,GAAG;AAEd,cAAA,qBAAqB,SAAS,GAAG;AAInC,kBAAM,eAAe,qBAClB,OAAO,CAAC,aAAa;AACpB,oBAAM,oBAAoB,qBAAqB,KAAK,CAAC,gBAAgB;AACnE,uBAAO,YAAY,gBAAgB,MAAM,SAAS,gBAAgB;AAAA,cAAA,CACnE;AAED,qBAAO,CAAC;AAAA,YACT,CAAA,EACA,IAAI,KAAK,IAAI,CAAC;AAEjB,oBAAQ,KAAK,EAAE,WAAW,WAAW,aAAc,CAAA;AAAA,UACrD;AAAA,QACF;AAAA,MACF;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;AAE7C,eAAW,EAAE,WAAW,UAAU,KAAK,cAAc;AAE7C,YAAA,SAAS,UAAU,kBAAkB;AAE3C,YAAM,eAAe,UAAU,IAAI,CAAC,aAAa;AAC/C,cAAM,QAAQ,cAAc,SAAS,MAAM,CAAC;AAC5C,eAAO,EAAE,GAAG,UAAU,CAAC,MAAM,GAAG,MAAM;AAAA,MAAA,CACvC;AAGD,YAAM,IAAI,YAAY,UAAU,MAAM,cAAc,GAAI;AAAA,IAC1D;AAAA,EAAA,CACD;AACH;"}