@strapi/core 0.0.0-next.bec3f8cddf61be32ee5516609a1d4d6032933972 → 0.0.0-next.becb1565a20b0d3fbd0e2d79455c09c2f9f46808

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.

Potentially problematic release.


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

Files changed (806) hide show
  1. package/dist/Strapi.d.ts.map +1 -1
  2. package/dist/Strapi.js +430 -403
  3. package/dist/Strapi.js.map +1 -1
  4. package/dist/Strapi.mjs +429 -402
  5. package/dist/Strapi.mjs.map +1 -1
  6. package/dist/compile.js +23 -14
  7. package/dist/compile.js.map +1 -1
  8. package/dist/compile.mjs +22 -14
  9. package/dist/compile.mjs.map +1 -1
  10. package/dist/configuration/config-loader.js +110 -97
  11. package/dist/configuration/config-loader.js.map +1 -1
  12. package/dist/configuration/config-loader.mjs +109 -96
  13. package/dist/configuration/config-loader.mjs.map +1 -1
  14. package/dist/configuration/get-dirs.js +31 -29
  15. package/dist/configuration/get-dirs.js.map +1 -1
  16. package/dist/configuration/get-dirs.mjs +30 -30
  17. package/dist/configuration/get-dirs.mjs.map +1 -1
  18. package/dist/configuration/index.d.ts +1 -0
  19. package/dist/configuration/index.d.ts.map +1 -1
  20. package/dist/configuration/index.js +85 -73
  21. package/dist/configuration/index.js.map +1 -1
  22. package/dist/configuration/index.mjs +84 -69
  23. package/dist/configuration/index.mjs.map +1 -1
  24. package/dist/configuration/urls.d.ts.map +1 -1
  25. package/dist/configuration/urls.js +74 -61
  26. package/dist/configuration/urls.js.map +1 -1
  27. package/dist/configuration/urls.mjs +73 -62
  28. package/dist/configuration/urls.mjs.map +1 -1
  29. package/dist/container.js +27 -23
  30. package/dist/container.js.map +1 -1
  31. package/dist/container.mjs +26 -24
  32. package/dist/container.mjs.map +1 -1
  33. package/dist/core-api/controller/collection-type.js +77 -76
  34. package/dist/core-api/controller/collection-type.js.map +1 -1
  35. package/dist/core-api/controller/collection-type.mjs +76 -77
  36. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  37. package/dist/core-api/controller/index.d.ts.map +1 -1
  38. package/dist/core-api/controller/index.js +64 -48
  39. package/dist/core-api/controller/index.js.map +1 -1
  40. package/dist/core-api/controller/index.mjs +63 -49
  41. package/dist/core-api/controller/index.mjs.map +1 -1
  42. package/dist/core-api/controller/single-type.js +41 -40
  43. package/dist/core-api/controller/single-type.js.map +1 -1
  44. package/dist/core-api/controller/single-type.mjs +40 -41
  45. package/dist/core-api/controller/single-type.mjs.map +1 -1
  46. package/dist/core-api/controller/transform.d.ts +3 -2
  47. package/dist/core-api/controller/transform.d.ts.map +1 -1
  48. package/dist/core-api/controller/transform.js +83 -64
  49. package/dist/core-api/controller/transform.js.map +1 -1
  50. package/dist/core-api/controller/transform.mjs +82 -65
  51. package/dist/core-api/controller/transform.mjs.map +1 -1
  52. package/dist/core-api/routes/index.d.ts +4 -22
  53. package/dist/core-api/routes/index.d.ts.map +1 -1
  54. package/dist/core-api/routes/index.js +205 -61
  55. package/dist/core-api/routes/index.js.map +1 -1
  56. package/dist/core-api/routes/index.mjs +185 -62
  57. package/dist/core-api/routes/index.mjs.map +1 -1
  58. package/dist/core-api/routes/validation/attributes.d.ts +244 -0
  59. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  60. package/dist/core-api/routes/validation/attributes.js +560 -0
  61. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  62. package/dist/core-api/routes/validation/attributes.mjs +521 -0
  63. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  64. package/dist/core-api/routes/validation/common.d.ts +105 -0
  65. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  66. package/dist/core-api/routes/validation/common.js +116 -0
  67. package/dist/core-api/routes/validation/common.js.map +1 -0
  68. package/dist/core-api/routes/validation/common.mjs +95 -0
  69. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  70. package/dist/core-api/routes/validation/component.d.ts +34 -0
  71. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  72. package/dist/core-api/routes/validation/component.js +45 -0
  73. package/dist/core-api/routes/validation/component.js.map +1 -0
  74. package/dist/core-api/routes/validation/component.mjs +43 -0
  75. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  76. package/dist/core-api/routes/validation/constants.d.ts +8 -0
  77. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  78. package/dist/core-api/routes/validation/constants.js +18 -0
  79. package/dist/core-api/routes/validation/constants.js.map +1 -0
  80. package/dist/core-api/routes/validation/constants.mjs +16 -0
  81. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  82. package/dist/core-api/routes/validation/content-type.d.ts +128 -0
  83. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  84. package/dist/core-api/routes/validation/content-type.js +201 -0
  85. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  86. package/dist/core-api/routes/validation/content-type.mjs +180 -0
  87. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  88. package/dist/core-api/routes/validation/index.d.ts +5 -0
  89. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  90. package/dist/core-api/routes/validation/mappers.d.ts +105 -0
  91. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
  92. package/dist/core-api/routes/validation/mappers.js +273 -0
  93. package/dist/core-api/routes/validation/mappers.js.map +1 -0
  94. package/dist/core-api/routes/validation/mappers.mjs +249 -0
  95. package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
  96. package/dist/core-api/routes/validation/utils.d.ts +47 -0
  97. package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
  98. package/dist/core-api/routes/validation/utils.js +128 -0
  99. package/dist/core-api/routes/validation/utils.js.map +1 -0
  100. package/dist/core-api/routes/validation/utils.mjs +106 -0
  101. package/dist/core-api/routes/validation/utils.mjs.map +1 -0
  102. package/dist/core-api/service/collection-type.js +73 -60
  103. package/dist/core-api/service/collection-type.js.map +1 -1
  104. package/dist/core-api/service/collection-type.mjs +72 -62
  105. package/dist/core-api/service/collection-type.mjs.map +1 -1
  106. package/dist/core-api/service/core-service.js +9 -8
  107. package/dist/core-api/service/core-service.js.map +1 -1
  108. package/dist/core-api/service/core-service.mjs +8 -9
  109. package/dist/core-api/service/core-service.mjs.map +1 -1
  110. package/dist/core-api/service/index.js +13 -13
  111. package/dist/core-api/service/index.js.map +1 -1
  112. package/dist/core-api/service/index.mjs +12 -14
  113. package/dist/core-api/service/index.mjs.map +1 -1
  114. package/dist/core-api/service/pagination.js +69 -43
  115. package/dist/core-api/service/pagination.js.map +1 -1
  116. package/dist/core-api/service/pagination.mjs +68 -47
  117. package/dist/core-api/service/pagination.mjs.map +1 -1
  118. package/dist/core-api/service/single-type.js +43 -39
  119. package/dist/core-api/service/single-type.js.map +1 -1
  120. package/dist/core-api/service/single-type.mjs +42 -41
  121. package/dist/core-api/service/single-type.mjs.map +1 -1
  122. package/dist/domain/content-type/index.d.ts.map +1 -1
  123. package/dist/domain/content-type/index.js +110 -99
  124. package/dist/domain/content-type/index.js.map +1 -1
  125. package/dist/domain/content-type/index.mjs +109 -99
  126. package/dist/domain/content-type/index.mjs.map +1 -1
  127. package/dist/domain/content-type/validator.js +84 -69
  128. package/dist/domain/content-type/validator.js.map +1 -1
  129. package/dist/domain/content-type/validator.mjs +83 -68
  130. package/dist/domain/content-type/validator.mjs.map +1 -1
  131. package/dist/domain/module/index.d.ts.map +1 -1
  132. package/dist/domain/module/index.js +112 -100
  133. package/dist/domain/module/index.js.map +1 -1
  134. package/dist/domain/module/index.mjs +111 -99
  135. package/dist/domain/module/index.mjs.map +1 -1
  136. package/dist/domain/module/validation.js +25 -20
  137. package/dist/domain/module/validation.js.map +1 -1
  138. package/dist/domain/module/validation.mjs +24 -21
  139. package/dist/domain/module/validation.mjs.map +1 -1
  140. package/dist/ee/index.d.ts +7 -0
  141. package/dist/ee/index.d.ts.map +1 -1
  142. package/dist/ee/index.js +197 -137
  143. package/dist/ee/index.js.map +1 -1
  144. package/dist/ee/index.mjs +196 -139
  145. package/dist/ee/index.mjs.map +1 -1
  146. package/dist/ee/license.d.ts +3 -1
  147. package/dist/ee/license.d.ts.map +1 -1
  148. package/dist/ee/license.js +105 -75
  149. package/dist/ee/license.js.map +1 -1
  150. package/dist/ee/license.mjs +103 -76
  151. package/dist/ee/license.mjs.map +1 -1
  152. package/dist/factories.d.ts +3 -1
  153. package/dist/factories.d.ts.map +1 -1
  154. package/dist/factories.js +80 -67
  155. package/dist/factories.js.map +1 -1
  156. package/dist/factories.mjs +77 -70
  157. package/dist/factories.mjs.map +1 -1
  158. package/dist/index.js +29 -26
  159. package/dist/index.js.map +1 -1
  160. package/dist/index.mjs +29 -29
  161. package/dist/index.mjs.map +1 -1
  162. package/dist/loaders/admin.d.ts.map +1 -1
  163. package/dist/loaders/admin.js +21 -20
  164. package/dist/loaders/admin.js.map +1 -1
  165. package/dist/loaders/admin.mjs +20 -20
  166. package/dist/loaders/admin.mjs.map +1 -1
  167. package/dist/loaders/apis.js +143 -120
  168. package/dist/loaders/apis.js.map +1 -1
  169. package/dist/loaders/apis.mjs +142 -119
  170. package/dist/loaders/apis.mjs.map +1 -1
  171. package/dist/loaders/components.js +33 -34
  172. package/dist/loaders/components.js.map +1 -1
  173. package/dist/loaders/components.mjs +32 -34
  174. package/dist/loaders/components.mjs.map +1 -1
  175. package/dist/loaders/index.js +22 -20
  176. package/dist/loaders/index.js.map +1 -1
  177. package/dist/loaders/index.mjs +21 -21
  178. package/dist/loaders/index.mjs.map +1 -1
  179. package/dist/loaders/middlewares.js +29 -25
  180. package/dist/loaders/middlewares.js.map +1 -1
  181. package/dist/loaders/middlewares.mjs +28 -25
  182. package/dist/loaders/middlewares.mjs.map +1 -1
  183. package/dist/loaders/plugins/get-enabled-plugins.js +126 -131
  184. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  185. package/dist/loaders/plugins/get-enabled-plugins.mjs +125 -108
  186. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  187. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  188. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  189. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  190. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  191. package/dist/loaders/plugins/index.js +132 -122
  192. package/dist/loaders/plugins/index.js.map +1 -1
  193. package/dist/loaders/plugins/index.mjs +121 -112
  194. package/dist/loaders/plugins/index.mjs.map +1 -1
  195. package/dist/loaders/policies.js +24 -20
  196. package/dist/loaders/policies.js.map +1 -1
  197. package/dist/loaders/policies.mjs +23 -20
  198. package/dist/loaders/policies.mjs.map +1 -1
  199. package/dist/loaders/sanitizers.js +10 -4
  200. package/dist/loaders/sanitizers.js.map +1 -1
  201. package/dist/loaders/sanitizers.mjs +9 -6
  202. package/dist/loaders/sanitizers.mjs.map +1 -1
  203. package/dist/loaders/src-index.js +35 -27
  204. package/dist/loaders/src-index.js.map +1 -1
  205. package/dist/loaders/src-index.mjs +34 -29
  206. package/dist/loaders/src-index.mjs.map +1 -1
  207. package/dist/loaders/validators.js +9 -4
  208. package/dist/loaders/validators.js.map +1 -1
  209. package/dist/loaders/validators.mjs +8 -6
  210. package/dist/loaders/validators.mjs.map +1 -1
  211. package/dist/middlewares/body.d.ts.map +1 -1
  212. package/dist/middlewares/body.js +58 -54
  213. package/dist/middlewares/body.js.map +1 -1
  214. package/dist/middlewares/body.mjs +57 -51
  215. package/dist/middlewares/body.mjs.map +1 -1
  216. package/dist/middlewares/compression.js +6 -6
  217. package/dist/middlewares/compression.js.map +1 -1
  218. package/dist/middlewares/compression.mjs +5 -5
  219. package/dist/middlewares/compression.mjs.map +1 -1
  220. package/dist/middlewares/cors.d.ts +9 -1
  221. package/dist/middlewares/cors.d.ts.map +1 -1
  222. package/dist/middlewares/cors.js +81 -48
  223. package/dist/middlewares/cors.js.map +1 -1
  224. package/dist/middlewares/cors.mjs +78 -46
  225. package/dist/middlewares/cors.mjs.map +1 -1
  226. package/dist/middlewares/errors.js +32 -30
  227. package/dist/middlewares/errors.js.map +1 -1
  228. package/dist/middlewares/errors.mjs +31 -31
  229. package/dist/middlewares/errors.mjs.map +1 -1
  230. package/dist/middlewares/favicon.js +27 -17
  231. package/dist/middlewares/favicon.js.map +1 -1
  232. package/dist/middlewares/favicon.mjs +26 -16
  233. package/dist/middlewares/favicon.mjs.map +1 -1
  234. package/dist/middlewares/index.js +32 -30
  235. package/dist/middlewares/index.js.map +1 -1
  236. package/dist/middlewares/index.mjs +31 -31
  237. package/dist/middlewares/index.mjs.map +1 -1
  238. package/dist/middlewares/ip.js +6 -6
  239. package/dist/middlewares/ip.js.map +1 -1
  240. package/dist/middlewares/ip.mjs +5 -5
  241. package/dist/middlewares/ip.mjs.map +1 -1
  242. package/dist/middlewares/logger.js +10 -9
  243. package/dist/middlewares/logger.js.map +1 -1
  244. package/dist/middlewares/logger.mjs +9 -10
  245. package/dist/middlewares/logger.mjs.map +1 -1
  246. package/dist/middlewares/powered-by.js +13 -9
  247. package/dist/middlewares/powered-by.js.map +1 -1
  248. package/dist/middlewares/powered-by.mjs +12 -10
  249. package/dist/middlewares/powered-by.mjs.map +1 -1
  250. package/dist/middlewares/public.js +33 -29
  251. package/dist/middlewares/public.js.map +1 -1
  252. package/dist/middlewares/public.mjs +32 -28
  253. package/dist/middlewares/public.mjs.map +1 -1
  254. package/dist/middlewares/query.js +35 -32
  255. package/dist/middlewares/query.js.map +1 -1
  256. package/dist/middlewares/query.mjs +34 -31
  257. package/dist/middlewares/query.mjs.map +1 -1
  258. package/dist/middlewares/response-time.js +10 -9
  259. package/dist/middlewares/response-time.js.map +1 -1
  260. package/dist/middlewares/response-time.mjs +9 -10
  261. package/dist/middlewares/response-time.mjs.map +1 -1
  262. package/dist/middlewares/responses.js +14 -12
  263. package/dist/middlewares/responses.js.map +1 -1
  264. package/dist/middlewares/responses.mjs +13 -13
  265. package/dist/middlewares/responses.mjs.map +1 -1
  266. package/dist/middlewares/security.js +109 -71
  267. package/dist/middlewares/security.js.map +1 -1
  268. package/dist/middlewares/security.mjs +108 -70
  269. package/dist/middlewares/security.mjs.map +1 -1
  270. package/dist/middlewares/session.js +26 -25
  271. package/dist/middlewares/session.js.map +1 -1
  272. package/dist/middlewares/session.mjs +25 -24
  273. package/dist/middlewares/session.mjs.map +1 -1
  274. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  275. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  276. package/dist/migrations/database/5.0.0-discard-drafts.js +152 -90
  277. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  278. package/dist/migrations/database/5.0.0-discard-drafts.mjs +151 -92
  279. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  280. package/dist/migrations/draft-publish.d.ts +1 -1
  281. package/dist/migrations/draft-publish.d.ts.map +1 -1
  282. package/dist/migrations/draft-publish.js +61 -34
  283. package/dist/migrations/draft-publish.js.map +1 -1
  284. package/dist/migrations/draft-publish.mjs +60 -36
  285. package/dist/migrations/draft-publish.mjs.map +1 -1
  286. package/dist/migrations/first-published-at.d.ts +4 -0
  287. package/dist/migrations/first-published-at.d.ts.map +1 -0
  288. package/dist/migrations/first-published-at.js +51 -0
  289. package/dist/migrations/first-published-at.js.map +1 -0
  290. package/dist/migrations/first-published-at.mjs +49 -0
  291. package/dist/migrations/first-published-at.mjs.map +1 -0
  292. package/dist/migrations/i18n.js +62 -45
  293. package/dist/migrations/i18n.js.map +1 -1
  294. package/dist/migrations/i18n.mjs +61 -47
  295. package/dist/migrations/i18n.mjs.map +1 -1
  296. package/dist/migrations/index.d.ts.map +1 -1
  297. package/dist/migrations/index.js +29 -10
  298. package/dist/migrations/index.js.map +1 -1
  299. package/dist/migrations/index.mjs +28 -12
  300. package/dist/migrations/index.mjs.map +1 -1
  301. package/dist/package.json.js +186 -0
  302. package/dist/package.json.js.map +1 -0
  303. package/dist/package.json.mjs +163 -0
  304. package/dist/package.json.mjs.map +1 -0
  305. package/dist/providers/admin.js +27 -17
  306. package/dist/providers/admin.js.map +1 -1
  307. package/dist/providers/admin.mjs +26 -19
  308. package/dist/providers/admin.mjs.map +1 -1
  309. package/dist/providers/coreStore.js +13 -8
  310. package/dist/providers/coreStore.js.map +1 -1
  311. package/dist/providers/coreStore.mjs +12 -10
  312. package/dist/providers/coreStore.mjs.map +1 -1
  313. package/dist/providers/cron.js +19 -16
  314. package/dist/providers/cron.js.map +1 -1
  315. package/dist/providers/cron.mjs +18 -18
  316. package/dist/providers/cron.mjs.map +1 -1
  317. package/dist/providers/index.js +18 -9
  318. package/dist/providers/index.js.map +1 -1
  319. package/dist/providers/index.mjs +17 -10
  320. package/dist/providers/index.mjs.map +1 -1
  321. package/dist/providers/provider.js +4 -3
  322. package/dist/providers/provider.js.map +1 -1
  323. package/dist/providers/provider.mjs +3 -4
  324. package/dist/providers/provider.mjs.map +1 -1
  325. package/dist/providers/registries.js +37 -32
  326. package/dist/providers/registries.js.map +1 -1
  327. package/dist/providers/registries.mjs +36 -34
  328. package/dist/providers/registries.mjs.map +1 -1
  329. package/dist/providers/telemetry.js +19 -16
  330. package/dist/providers/telemetry.js.map +1 -1
  331. package/dist/providers/telemetry.mjs +18 -18
  332. package/dist/providers/telemetry.mjs.map +1 -1
  333. package/dist/providers/webhooks.js +28 -26
  334. package/dist/providers/webhooks.js.map +1 -1
  335. package/dist/providers/webhooks.mjs +27 -28
  336. package/dist/providers/webhooks.mjs.map +1 -1
  337. package/dist/registries/apis.js +23 -20
  338. package/dist/registries/apis.js.map +1 -1
  339. package/dist/registries/apis.mjs +22 -22
  340. package/dist/registries/apis.mjs.map +1 -1
  341. package/dist/registries/components.js +35 -37
  342. package/dist/registries/components.js.map +1 -1
  343. package/dist/registries/components.mjs +34 -39
  344. package/dist/registries/components.mjs.map +1 -1
  345. package/dist/registries/content-types.js +54 -59
  346. package/dist/registries/content-types.js.map +1 -1
  347. package/dist/registries/content-types.mjs +53 -61
  348. package/dist/registries/content-types.mjs.map +1 -1
  349. package/dist/registries/controllers.js +70 -71
  350. package/dist/registries/controllers.js.map +1 -1
  351. package/dist/registries/controllers.mjs +69 -73
  352. package/dist/registries/controllers.mjs.map +1 -1
  353. package/dist/registries/custom-fields.js +75 -65
  354. package/dist/registries/custom-fields.js.map +1 -1
  355. package/dist/registries/custom-fields.mjs +74 -67
  356. package/dist/registries/custom-fields.mjs.map +1 -1
  357. package/dist/registries/hooks.js +46 -49
  358. package/dist/registries/hooks.js.map +1 -1
  359. package/dist/registries/hooks.mjs +45 -51
  360. package/dist/registries/hooks.mjs.map +1 -1
  361. package/dist/registries/middlewares.js +49 -51
  362. package/dist/registries/middlewares.js.map +1 -1
  363. package/dist/registries/middlewares.mjs +48 -53
  364. package/dist/registries/middlewares.mjs.map +1 -1
  365. package/dist/registries/models.js +14 -13
  366. package/dist/registries/models.js.map +1 -1
  367. package/dist/registries/models.mjs +13 -14
  368. package/dist/registries/models.mjs.map +1 -1
  369. package/dist/registries/modules.js +39 -36
  370. package/dist/registries/modules.js.map +1 -1
  371. package/dist/registries/modules.mjs +38 -38
  372. package/dist/registries/modules.mjs.map +1 -1
  373. package/dist/registries/namespace.js +21 -20
  374. package/dist/registries/namespace.js.map +1 -1
  375. package/dist/registries/namespace.mjs +20 -23
  376. package/dist/registries/namespace.mjs.map +1 -1
  377. package/dist/registries/plugins.js +23 -20
  378. package/dist/registries/plugins.js.map +1 -1
  379. package/dist/registries/plugins.mjs +22 -22
  380. package/dist/registries/plugins.mjs.map +1 -1
  381. package/dist/registries/policies.js +103 -96
  382. package/dist/registries/policies.js.map +1 -1
  383. package/dist/registries/policies.mjs +102 -98
  384. package/dist/registries/policies.mjs.map +1 -1
  385. package/dist/registries/sanitizers.js +23 -22
  386. package/dist/registries/sanitizers.js.map +1 -1
  387. package/dist/registries/sanitizers.mjs +22 -22
  388. package/dist/registries/sanitizers.mjs.map +1 -1
  389. package/dist/registries/services.js +71 -71
  390. package/dist/registries/services.js.map +1 -1
  391. package/dist/registries/services.mjs +70 -73
  392. package/dist/registries/services.mjs.map +1 -1
  393. package/dist/registries/validators.js +23 -22
  394. package/dist/registries/validators.js.map +1 -1
  395. package/dist/registries/validators.mjs +22 -22
  396. package/dist/registries/validators.mjs.map +1 -1
  397. package/dist/services/auth/index.js +74 -74
  398. package/dist/services/auth/index.js.map +1 -1
  399. package/dist/services/auth/index.mjs +73 -74
  400. package/dist/services/auth/index.mjs.map +1 -1
  401. package/dist/services/config.js +47 -43
  402. package/dist/services/config.js.map +1 -1
  403. package/dist/services/config.mjs +46 -44
  404. package/dist/services/config.mjs.map +1 -1
  405. package/dist/services/content-api/index.d.ts +1 -1
  406. package/dist/services/content-api/index.d.ts.map +1 -1
  407. package/dist/services/content-api/index.js +80 -79
  408. package/dist/services/content-api/index.js.map +1 -1
  409. package/dist/services/content-api/index.mjs +79 -79
  410. package/dist/services/content-api/index.mjs.map +1 -1
  411. package/dist/services/content-api/permissions/engine.js +8 -5
  412. package/dist/services/content-api/permissions/engine.js.map +1 -1
  413. package/dist/services/content-api/permissions/engine.mjs +7 -5
  414. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  415. package/dist/services/content-api/permissions/index.js +101 -81
  416. package/dist/services/content-api/permissions/index.js.map +1 -1
  417. package/dist/services/content-api/permissions/index.mjs +100 -81
  418. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  419. package/dist/services/content-api/permissions/providers/action.js +17 -14
  420. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  421. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  422. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  423. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  424. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  425. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  426. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  427. package/dist/services/content-source-maps.d.ts +13 -0
  428. package/dist/services/content-source-maps.d.ts.map +1 -0
  429. package/dist/services/content-source-maps.js +108 -0
  430. package/dist/services/content-source-maps.js.map +1 -0
  431. package/dist/services/content-source-maps.mjs +106 -0
  432. package/dist/services/content-source-maps.mjs.map +1 -0
  433. package/dist/services/core-store.d.ts +2 -2
  434. package/dist/services/core-store.d.ts.map +1 -1
  435. package/dist/services/core-store.js +115 -95
  436. package/dist/services/core-store.js.map +1 -1
  437. package/dist/services/core-store.mjs +114 -97
  438. package/dist/services/core-store.mjs.map +1 -1
  439. package/dist/services/cron.js +74 -65
  440. package/dist/services/cron.js.map +1 -1
  441. package/dist/services/cron.mjs +73 -67
  442. package/dist/services/cron.mjs.map +1 -1
  443. package/dist/services/custom-fields.js +9 -7
  444. package/dist/services/custom-fields.js.map +1 -1
  445. package/dist/services/custom-fields.mjs +8 -9
  446. package/dist/services/custom-fields.mjs.map +1 -1
  447. package/dist/services/document-service/attributes/index.js +23 -18
  448. package/dist/services/document-service/attributes/index.js.map +1 -1
  449. package/dist/services/document-service/attributes/index.mjs +22 -19
  450. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  451. package/dist/services/document-service/attributes/transforms.js +16 -15
  452. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  453. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  454. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  455. package/dist/services/document-service/common.js +5 -4
  456. package/dist/services/document-service/common.js.map +1 -1
  457. package/dist/services/document-service/common.mjs +4 -5
  458. package/dist/services/document-service/common.mjs.map +1 -1
  459. package/dist/services/document-service/components.d.ts +6 -1
  460. package/dist/services/document-service/components.d.ts.map +1 -1
  461. package/dist/services/document-service/components.js +351 -256
  462. package/dist/services/document-service/components.js.map +1 -1
  463. package/dist/services/document-service/components.mjs +349 -261
  464. package/dist/services/document-service/components.mjs.map +1 -1
  465. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  466. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  467. package/dist/services/document-service/draft-and-publish.js +88 -48
  468. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  469. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  470. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  471. package/dist/services/document-service/entries.d.ts.map +1 -1
  472. package/dist/services/document-service/entries.js +151 -91
  473. package/dist/services/document-service/entries.js.map +1 -1
  474. package/dist/services/document-service/entries.mjs +150 -92
  475. package/dist/services/document-service/entries.mjs.map +1 -1
  476. package/dist/services/document-service/events.d.ts +1 -1
  477. package/dist/services/document-service/events.d.ts.map +1 -1
  478. package/dist/services/document-service/events.js +52 -40
  479. package/dist/services/document-service/events.js.map +1 -1
  480. package/dist/services/document-service/events.mjs +51 -41
  481. package/dist/services/document-service/events.mjs.map +1 -1
  482. package/dist/services/document-service/first-published-at.d.ts +7 -0
  483. package/dist/services/document-service/first-published-at.d.ts.map +1 -0
  484. package/dist/services/document-service/first-published-at.js +31 -0
  485. package/dist/services/document-service/first-published-at.js.map +1 -0
  486. package/dist/services/document-service/first-published-at.mjs +28 -0
  487. package/dist/services/document-service/first-published-at.mjs.map +1 -0
  488. package/dist/services/document-service/index.js +53 -33
  489. package/dist/services/document-service/index.js.map +1 -1
  490. package/dist/services/document-service/index.mjs +52 -34
  491. package/dist/services/document-service/index.mjs.map +1 -1
  492. package/dist/services/document-service/internationalization.d.ts +6 -1
  493. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  494. package/dist/services/document-service/internationalization.js +94 -46
  495. package/dist/services/document-service/internationalization.js.map +1 -1
  496. package/dist/services/document-service/internationalization.mjs +92 -50
  497. package/dist/services/document-service/internationalization.mjs.map +1 -1
  498. package/dist/services/document-service/middlewares/errors.js +23 -19
  499. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  500. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  501. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  502. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  503. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  504. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  505. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  506. package/dist/services/document-service/params.js +11 -5
  507. package/dist/services/document-service/params.js.map +1 -1
  508. package/dist/services/document-service/params.mjs +10 -6
  509. package/dist/services/document-service/params.mjs.map +1 -1
  510. package/dist/services/document-service/repository.d.ts.map +1 -1
  511. package/dist/services/document-service/repository.js +362 -319
  512. package/dist/services/document-service/repository.js.map +1 -1
  513. package/dist/services/document-service/repository.mjs +361 -320
  514. package/dist/services/document-service/repository.mjs.map +1 -1
  515. package/dist/services/document-service/transform/data.js +22 -12
  516. package/dist/services/document-service/transform/data.js.map +1 -1
  517. package/dist/services/document-service/transform/data.mjs +21 -13
  518. package/dist/services/document-service/transform/data.mjs.map +1 -1
  519. package/dist/services/document-service/transform/fields.js +26 -17
  520. package/dist/services/document-service/transform/fields.js.map +1 -1
  521. package/dist/services/document-service/transform/fields.mjs +25 -18
  522. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  523. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  524. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  525. package/dist/services/document-service/transform/id-map.js +115 -77
  526. package/dist/services/document-service/transform/id-map.js.map +1 -1
  527. package/dist/services/document-service/transform/id-map.mjs +114 -78
  528. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  529. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  530. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  531. package/dist/services/document-service/transform/id-transform.js +37 -29
  532. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  533. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  534. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  535. package/dist/services/document-service/transform/populate.js +23 -18
  536. package/dist/services/document-service/transform/populate.js.map +1 -1
  537. package/dist/services/document-service/transform/populate.mjs +22 -19
  538. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  539. package/dist/services/document-service/transform/query.js +11 -6
  540. package/dist/services/document-service/transform/query.js.map +1 -1
  541. package/dist/services/document-service/transform/query.mjs +10 -7
  542. package/dist/services/document-service/transform/query.mjs.map +1 -1
  543. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  544. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  545. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  546. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  547. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  548. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  549. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  550. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  551. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  552. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  553. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  554. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  555. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  556. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  557. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  558. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  559. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  560. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  561. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  562. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  563. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  564. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  565. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  566. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  567. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  568. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  569. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  570. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  571. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -77
  572. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  573. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  574. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  575. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  576. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  577. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  578. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  579. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  580. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  581. package/dist/services/document-service/utils/populate.d.ts +1 -1
  582. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  583. package/dist/services/document-service/utils/populate.js +66 -42
  584. package/dist/services/document-service/utils/populate.js.map +1 -1
  585. package/dist/services/document-service/utils/populate.mjs +65 -43
  586. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  587. package/dist/services/document-service/utils/unidirectional-relations.d.ts +19 -2
  588. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  589. package/dist/services/document-service/utils/unidirectional-relations.js +124 -62
  590. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  591. package/dist/services/document-service/utils/unidirectional-relations.mjs +123 -64
  592. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  593. package/dist/services/entity-service/index.js +230 -161
  594. package/dist/services/entity-service/index.js.map +1 -1
  595. package/dist/services/entity-service/index.mjs +229 -160
  596. package/dist/services/entity-service/index.mjs.map +1 -1
  597. package/dist/services/entity-validator/blocks-validator.js +135 -103
  598. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  599. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  600. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  601. package/dist/services/entity-validator/index.d.ts +1 -1
  602. package/dist/services/entity-validator/index.d.ts.map +1 -1
  603. package/dist/services/entity-validator/index.js +370 -366
  604. package/dist/services/entity-validator/index.js.map +1 -1
  605. package/dist/services/entity-validator/index.mjs +366 -363
  606. package/dist/services/entity-validator/index.mjs.map +1 -1
  607. package/dist/services/entity-validator/validators.d.ts +1 -0
  608. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  609. package/dist/services/entity-validator/validators.js +270 -209
  610. package/dist/services/entity-validator/validators.js.map +1 -1
  611. package/dist/services/entity-validator/validators.mjs +269 -215
  612. package/dist/services/entity-validator/validators.mjs.map +1 -1
  613. package/dist/services/errors.js +65 -65
  614. package/dist/services/errors.js.map +1 -1
  615. package/dist/services/errors.mjs +64 -66
  616. package/dist/services/errors.mjs.map +1 -1
  617. package/dist/services/event-hub.js +82 -69
  618. package/dist/services/event-hub.js.map +1 -1
  619. package/dist/services/event-hub.mjs +81 -71
  620. package/dist/services/event-hub.mjs.map +1 -1
  621. package/dist/services/features.js +19 -14
  622. package/dist/services/features.js.map +1 -1
  623. package/dist/services/features.mjs +18 -15
  624. package/dist/services/features.mjs.map +1 -1
  625. package/dist/services/fs.js +41 -40
  626. package/dist/services/fs.js.map +1 -1
  627. package/dist/services/fs.mjs +40 -39
  628. package/dist/services/fs.mjs.map +1 -1
  629. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  630. package/dist/services/metrics/admin-user-hash.js +13 -11
  631. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  632. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  633. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  634. package/dist/services/metrics/index.d.ts +1 -1
  635. package/dist/services/metrics/index.d.ts.map +1 -1
  636. package/dist/services/metrics/index.js +48 -40
  637. package/dist/services/metrics/index.js.map +1 -1
  638. package/dist/services/metrics/index.mjs +47 -42
  639. package/dist/services/metrics/index.mjs.map +1 -1
  640. package/dist/services/metrics/is-truthy.js +13 -6
  641. package/dist/services/metrics/is-truthy.js.map +1 -1
  642. package/dist/services/metrics/is-truthy.mjs +12 -6
  643. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  644. package/dist/services/metrics/middleware.d.ts +2 -1
  645. package/dist/services/metrics/middleware.d.ts.map +1 -1
  646. package/dist/services/metrics/middleware.js +37 -22
  647. package/dist/services/metrics/middleware.js.map +1 -1
  648. package/dist/services/metrics/middleware.mjs +36 -24
  649. package/dist/services/metrics/middleware.mjs.map +1 -1
  650. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  651. package/dist/services/metrics/rate-limiter.js +24 -19
  652. package/dist/services/metrics/rate-limiter.js.map +1 -1
  653. package/dist/services/metrics/rate-limiter.mjs +23 -21
  654. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  655. package/dist/services/metrics/sender.d.ts.map +1 -1
  656. package/dist/services/metrics/sender.js +78 -69
  657. package/dist/services/metrics/sender.js.map +1 -1
  658. package/dist/services/metrics/sender.mjs +77 -64
  659. package/dist/services/metrics/sender.mjs.map +1 -1
  660. package/dist/services/query-params.js +13 -10
  661. package/dist/services/query-params.js.map +1 -1
  662. package/dist/services/query-params.mjs +12 -12
  663. package/dist/services/query-params.mjs.map +1 -1
  664. package/dist/services/reloader.js +35 -32
  665. package/dist/services/reloader.js.map +1 -1
  666. package/dist/services/reloader.mjs +34 -33
  667. package/dist/services/reloader.mjs.map +1 -1
  668. package/dist/services/request-context.js +11 -8
  669. package/dist/services/request-context.js.map +1 -1
  670. package/dist/services/request-context.mjs +10 -10
  671. package/dist/services/request-context.mjs.map +1 -1
  672. package/dist/services/server/admin-api.js +11 -10
  673. package/dist/services/server/admin-api.js.map +1 -1
  674. package/dist/services/server/admin-api.mjs +10 -11
  675. package/dist/services/server/admin-api.mjs.map +1 -1
  676. package/dist/services/server/api.js +33 -27
  677. package/dist/services/server/api.js.map +1 -1
  678. package/dist/services/server/api.mjs +32 -26
  679. package/dist/services/server/api.mjs.map +1 -1
  680. package/dist/services/server/compose-endpoint.js +116 -105
  681. package/dist/services/server/compose-endpoint.js.map +1 -1
  682. package/dist/services/server/compose-endpoint.mjs +115 -105
  683. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  684. package/dist/services/server/content-api.js +11 -9
  685. package/dist/services/server/content-api.js.map +1 -1
  686. package/dist/services/server/content-api.mjs +10 -10
  687. package/dist/services/server/content-api.mjs.map +1 -1
  688. package/dist/services/server/http-server.js +48 -44
  689. package/dist/services/server/http-server.js.map +1 -1
  690. package/dist/services/server/http-server.mjs +47 -43
  691. package/dist/services/server/http-server.mjs.map +1 -1
  692. package/dist/services/server/index.js +85 -82
  693. package/dist/services/server/index.js.map +1 -1
  694. package/dist/services/server/index.mjs +84 -81
  695. package/dist/services/server/index.mjs.map +1 -1
  696. package/dist/services/server/koa.js +49 -47
  697. package/dist/services/server/koa.js.map +1 -1
  698. package/dist/services/server/koa.mjs +48 -44
  699. package/dist/services/server/koa.mjs.map +1 -1
  700. package/dist/services/server/middleware.js +86 -82
  701. package/dist/services/server/middleware.js.map +1 -1
  702. package/dist/services/server/middleware.mjs +85 -82
  703. package/dist/services/server/middleware.mjs.map +1 -1
  704. package/dist/services/server/policy.js +24 -17
  705. package/dist/services/server/policy.js.map +1 -1
  706. package/dist/services/server/policy.mjs +23 -18
  707. package/dist/services/server/policy.mjs.map +1 -1
  708. package/dist/services/server/register-middlewares.js +68 -61
  709. package/dist/services/server/register-middlewares.js.map +1 -1
  710. package/dist/services/server/register-middlewares.mjs +67 -63
  711. package/dist/services/server/register-middlewares.mjs.map +1 -1
  712. package/dist/services/server/register-routes.js +109 -66
  713. package/dist/services/server/register-routes.js.map +1 -1
  714. package/dist/services/server/register-routes.mjs +108 -66
  715. package/dist/services/server/register-routes.mjs.map +1 -1
  716. package/dist/services/server/routing.d.ts +10 -0
  717. package/dist/services/server/routing.d.ts.map +1 -1
  718. package/dist/services/server/routing.js +100 -81
  719. package/dist/services/server/routing.js.map +1 -1
  720. package/dist/services/server/routing.mjs +99 -81
  721. package/dist/services/server/routing.mjs.map +1 -1
  722. package/dist/services/utils/conditional-fields.d.ts +3 -0
  723. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  724. package/dist/services/utils/conditional-fields.js +22 -0
  725. package/dist/services/utils/conditional-fields.js.map +1 -0
  726. package/dist/services/utils/conditional-fields.mjs +20 -0
  727. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  728. package/dist/services/utils/dynamic-zones.js +13 -14
  729. package/dist/services/utils/dynamic-zones.js.map +1 -1
  730. package/dist/services/utils/dynamic-zones.mjs +12 -16
  731. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  732. package/dist/services/webhook-runner.js +124 -122
  733. package/dist/services/webhook-runner.js.map +1 -1
  734. package/dist/services/webhook-runner.mjs +123 -121
  735. package/dist/services/webhook-runner.mjs.map +1 -1
  736. package/dist/services/webhook-store.js +132 -99
  737. package/dist/services/webhook-store.js.map +1 -1
  738. package/dist/services/webhook-store.mjs +131 -101
  739. package/dist/services/webhook-store.mjs.map +1 -1
  740. package/dist/services/worker-queue.js +44 -49
  741. package/dist/services/worker-queue.js.map +1 -1
  742. package/dist/services/worker-queue.mjs +43 -49
  743. package/dist/services/worker-queue.mjs.map +1 -1
  744. package/dist/utils/convert-custom-field-type.js +17 -20
  745. package/dist/utils/convert-custom-field-type.js.map +1 -1
  746. package/dist/utils/convert-custom-field-type.mjs +16 -21
  747. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  748. package/dist/utils/cron.js +64 -30
  749. package/dist/utils/cron.js.map +1 -1
  750. package/dist/utils/cron.mjs +63 -31
  751. package/dist/utils/cron.mjs.map +1 -1
  752. package/dist/utils/fetch.d.ts +5 -1
  753. package/dist/utils/fetch.d.ts.map +1 -1
  754. package/dist/utils/fetch.js +28 -18
  755. package/dist/utils/fetch.js.map +1 -1
  756. package/dist/utils/fetch.mjs +27 -19
  757. package/dist/utils/fetch.mjs.map +1 -1
  758. package/dist/utils/filepath-to-prop-path.js +20 -28
  759. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  760. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  761. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  762. package/dist/utils/is-initialized.js +21 -12
  763. package/dist/utils/is-initialized.js.map +1 -1
  764. package/dist/utils/is-initialized.mjs +20 -13
  765. package/dist/utils/is-initialized.mjs.map +1 -1
  766. package/dist/utils/lifecycles.js +6 -5
  767. package/dist/utils/lifecycles.js.map +1 -1
  768. package/dist/utils/lifecycles.mjs +5 -6
  769. package/dist/utils/lifecycles.mjs.map +1 -1
  770. package/dist/utils/load-config-file.js +40 -38
  771. package/dist/utils/load-config-file.js.map +1 -1
  772. package/dist/utils/load-config-file.mjs +39 -36
  773. package/dist/utils/load-config-file.mjs.map +1 -1
  774. package/dist/utils/load-files.js +40 -35
  775. package/dist/utils/load-files.js.map +1 -1
  776. package/dist/utils/load-files.mjs +39 -32
  777. package/dist/utils/load-files.mjs.map +1 -1
  778. package/dist/utils/open-browser.js +8 -8
  779. package/dist/utils/open-browser.js.map +1 -1
  780. package/dist/utils/open-browser.mjs +7 -7
  781. package/dist/utils/open-browser.mjs.map +1 -1
  782. package/dist/utils/resolve-working-dirs.js +23 -10
  783. package/dist/utils/resolve-working-dirs.js.map +1 -1
  784. package/dist/utils/resolve-working-dirs.mjs +22 -9
  785. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  786. package/dist/utils/signals.js +20 -14
  787. package/dist/utils/signals.js.map +1 -1
  788. package/dist/utils/signals.mjs +19 -15
  789. package/dist/utils/signals.mjs.map +1 -1
  790. package/dist/utils/startup-logger.d.ts.map +1 -1
  791. package/dist/utils/startup-logger.js +107 -78
  792. package/dist/utils/startup-logger.js.map +1 -1
  793. package/dist/utils/startup-logger.mjs +106 -75
  794. package/dist/utils/startup-logger.mjs.map +1 -1
  795. package/dist/utils/transform-content-types-to-models.d.ts +225 -0
  796. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  797. package/dist/utils/transform-content-types-to-models.js +350 -261
  798. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  799. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  800. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  801. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  802. package/dist/utils/update-notifier/index.js +68 -73
  803. package/dist/utils/update-notifier/index.js.map +1 -1
  804. package/dist/utils/update-notifier/index.mjs +67 -67
  805. package/dist/utils/update-notifier/index.mjs.map +1 -1
  806. package/package.json +31 -28
@@ -1,284 +1,379 @@
1
- "use strict";
2
- Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
- const _ = require("lodash");
4
- const fp = require("lodash/fp");
5
- const strapiUtils = require("@strapi/utils");
6
- const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
7
- const ___default = /* @__PURE__ */ _interopDefault(_);
8
- const omitComponentData = fp.curry(
9
- (schema, data) => {
1
+ 'use strict';
2
+
3
+ var _ = require('lodash');
4
+ var fp = require('lodash/fp');
5
+ var strapiUtils = require('@strapi/utils');
6
+ var transformContentTypesToModels = require('../../utils/transform-content-types-to-models.js');
7
+
8
+ const omitComponentData = fp.curry((schema, data)=>{
10
9
  const { attributes } = schema;
11
- const componentAttributes = Object.keys(attributes).filter(
12
- (attributeName) => strapiUtils.contentTypes.isComponentAttribute(attributes[attributeName])
13
- );
10
+ const componentAttributes = Object.keys(attributes).filter((attributeName)=>strapiUtils.contentTypes.isComponentAttribute(attributes[attributeName]));
14
11
  return fp.omit(componentAttributes, data);
15
- }
16
- );
17
- const createComponents = async (uid, data) => {
18
- const { attributes = {} } = strapi.getModel(uid);
19
- const componentBody = {};
20
- const attributeNames = Object.keys(attributes);
21
- for (const attributeName of attributeNames) {
22
- const attribute = attributes[attributeName];
23
- if (!fp.has(attributeName, data) || !strapiUtils.contentTypes.isComponentAttribute(attribute)) {
24
- continue;
25
- }
26
- if (attribute.type === "component") {
27
- const { component: componentUID, repeatable = false } = attribute;
28
- const componentValue = data[attributeName];
29
- if (componentValue === null) {
30
- continue;
31
- }
32
- if (repeatable === true) {
33
- if (!Array.isArray(componentValue)) {
34
- throw new Error("Expected an array to create repeatable component");
12
+ });
13
+ // NOTE: we could generalize the logic to allow CRUD of relation directly in the DB layer
14
+ const createComponents = async (uid, data)=>{
15
+ const { attributes = {} } = strapi.getModel(uid);
16
+ const componentBody = {};
17
+ const attributeNames = Object.keys(attributes);
18
+ for (const attributeName of attributeNames){
19
+ const attribute = attributes[attributeName];
20
+ if (!fp.has(attributeName, data) || !strapiUtils.contentTypes.isComponentAttribute(attribute)) {
21
+ continue;
35
22
  }
36
- const components = await strapiUtils.async.map(
37
- componentValue,
38
- (value) => createComponent(componentUID, value)
39
- );
40
- componentBody[attributeName] = components.map(({ id }) => {
41
- return {
42
- id,
43
- __pivot: {
44
- field: attributeName,
45
- component_type: componentUID
23
+ if (attribute.type === 'component') {
24
+ const { component: componentUID, repeatable = false } = attribute;
25
+ const componentValue = data[attributeName];
26
+ if (componentValue === null) {
27
+ continue;
46
28
  }
47
- };
48
- });
49
- } else {
50
- const component = await createComponent(
51
- componentUID,
52
- componentValue
53
- );
54
- componentBody[attributeName] = {
55
- id: component.id,
56
- __pivot: {
57
- field: attributeName,
58
- component_type: componentUID
59
- }
60
- };
61
- }
62
- continue;
63
- }
64
- if (attribute.type === "dynamiczone") {
65
- const dynamiczoneValues = data[attributeName];
66
- if (!Array.isArray(dynamiczoneValues)) {
67
- throw new Error("Expected an array to create repeatable component");
68
- }
69
- const createDynamicZoneComponents = async (value) => {
70
- const { id } = await createComponent(value.__component, value);
71
- return {
72
- id,
73
- __component: value.__component,
74
- __pivot: {
75
- field: attributeName
76
- }
77
- };
78
- };
79
- componentBody[attributeName] = await strapiUtils.async.map(
80
- dynamiczoneValues,
81
- createDynamicZoneComponents
82
- );
83
- continue;
29
+ if (repeatable === true) {
30
+ if (!Array.isArray(componentValue)) {
31
+ throw new Error('Expected an array to create repeatable component');
32
+ }
33
+ const components = await strapiUtils.async.map(componentValue, (value)=>createComponent(componentUID, value));
34
+ componentBody[attributeName] = components.map(({ id })=>{
35
+ return {
36
+ id,
37
+ __pivot: {
38
+ field: attributeName,
39
+ component_type: componentUID
40
+ }
41
+ };
42
+ });
43
+ } else {
44
+ const component = await createComponent(componentUID, componentValue);
45
+ componentBody[attributeName] = {
46
+ id: component.id,
47
+ __pivot: {
48
+ field: attributeName,
49
+ component_type: componentUID
50
+ }
51
+ };
52
+ }
53
+ continue;
54
+ }
55
+ if (attribute.type === 'dynamiczone') {
56
+ const dynamiczoneValues = data[attributeName];
57
+ if (!Array.isArray(dynamiczoneValues)) {
58
+ throw new Error('Expected an array to create repeatable component');
59
+ }
60
+ const createDynamicZoneComponents = async (value)=>{
61
+ const { id } = await createComponent(value.__component, value);
62
+ return {
63
+ id,
64
+ __component: value.__component,
65
+ __pivot: {
66
+ field: attributeName
67
+ }
68
+ };
69
+ };
70
+ // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1
71
+ componentBody[attributeName] = await strapiUtils.async.map(dynamiczoneValues, createDynamicZoneComponents);
72
+ continue;
73
+ }
84
74
  }
85
- }
86
- return componentBody;
87
- };
88
- const getComponents = async (uid, entity) => {
89
- const componentAttributes = strapiUtils.contentTypes.getComponentAttributes(strapi.getModel(uid));
90
- if (___default.default.isEmpty(componentAttributes)) {
91
- return {};
92
- }
93
- return strapi.db.query(uid).load(entity, componentAttributes);
75
+ return componentBody;
94
76
  };
95
- const updateComponents = async (uid, entityToUpdate, data) => {
96
- const { attributes = {} } = strapi.getModel(uid);
97
- const componentBody = {};
98
- for (const attributeName of Object.keys(attributes)) {
99
- const attribute = attributes[attributeName];
100
- if (!fp.has(attributeName, data)) {
101
- continue;
77
+ const getComponents = async (uid, entity)=>{
78
+ const componentAttributes = strapiUtils.contentTypes.getComponentAttributes(strapi.getModel(uid));
79
+ if (_.isEmpty(componentAttributes)) {
80
+ return {};
102
81
  }
103
- if (attribute.type === "component") {
104
- const { component: componentUID, repeatable = false } = attribute;
105
- const componentValue = data[attributeName];
106
- await deleteOldComponents(uid, componentUID, entityToUpdate, attributeName, componentValue);
107
- if (repeatable === true) {
108
- if (!Array.isArray(componentValue)) {
109
- throw new Error("Expected an array to create repeatable component");
82
+ return strapi.db.query(uid).load(entity, componentAttributes);
83
+ };
84
+ /*
85
+ delete old components
86
+ create or update
87
+ */ const updateComponents = async (uid, entityToUpdate, data)=>{
88
+ const { attributes = {} } = strapi.getModel(uid);
89
+ const componentBody = {};
90
+ for (const attributeName of Object.keys(attributes)){
91
+ const attribute = attributes[attributeName];
92
+ if (!fp.has(attributeName, data)) {
93
+ continue;
110
94
  }
111
- const components = await strapiUtils.async.map(
112
- componentValue,
113
- (value) => updateOrCreateComponent(componentUID, value)
114
- );
115
- componentBody[attributeName] = components.filter(___default.default.negate(___default.default.isNil)).map(({ id }) => {
116
- return {
117
- id,
118
- __pivot: {
119
- field: attributeName,
120
- component_type: componentUID
95
+ if (attribute.type === 'component') {
96
+ const { component: componentUID, repeatable = false } = attribute;
97
+ const componentValue = data[attributeName];
98
+ await deleteOldComponents(uid, componentUID, entityToUpdate, attributeName, componentValue);
99
+ if (repeatable === true) {
100
+ if (!Array.isArray(componentValue)) {
101
+ throw new Error('Expected an array to create repeatable component');
102
+ }
103
+ // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1
104
+ const components = await strapiUtils.async.map(componentValue, (value)=>updateOrCreateComponent(componentUID, value));
105
+ componentBody[attributeName] = components.filter(_.negate(_.isNil)).map(({ id })=>{
106
+ return {
107
+ id,
108
+ __pivot: {
109
+ field: attributeName,
110
+ component_type: componentUID
111
+ }
112
+ };
113
+ });
114
+ } else {
115
+ const component = await updateOrCreateComponent(componentUID, componentValue);
116
+ componentBody[attributeName] = component && {
117
+ id: component.id,
118
+ __pivot: {
119
+ field: attributeName,
120
+ component_type: componentUID
121
+ }
122
+ };
121
123
  }
122
- };
123
- });
124
- } else {
125
- const component = await updateOrCreateComponent(componentUID, componentValue);
126
- componentBody[attributeName] = component && {
127
- id: component.id,
128
- __pivot: {
129
- field: attributeName,
130
- component_type: componentUID
131
- }
132
- };
133
- }
134
- } else if (attribute.type === "dynamiczone") {
135
- const dynamiczoneValues = data[attributeName];
136
- await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);
137
- if (!Array.isArray(dynamiczoneValues)) {
138
- throw new Error("Expected an array to create repeatable component");
139
- }
140
- componentBody[attributeName] = await strapiUtils.async.map(dynamiczoneValues, async (value) => {
141
- const { id } = await updateOrCreateComponent(value.__component, value);
142
- return {
143
- id,
144
- __component: value.__component,
145
- __pivot: {
146
- field: attributeName
147
- }
148
- };
149
- });
124
+ } else if (attribute.type === 'dynamiczone') {
125
+ const dynamiczoneValues = data[attributeName];
126
+ await deleteOldDZComponents(uid, entityToUpdate, attributeName, dynamiczoneValues);
127
+ if (!Array.isArray(dynamiczoneValues)) {
128
+ throw new Error('Expected an array to create repeatable component');
129
+ }
130
+ // MySQL/MariaDB can cause deadlocks here if concurrency higher than 1
131
+ componentBody[attributeName] = await strapiUtils.async.map(dynamiczoneValues, async (value)=>{
132
+ const { id } = await updateOrCreateComponent(value.__component, value);
133
+ return {
134
+ id,
135
+ __component: value.__component,
136
+ __pivot: {
137
+ field: attributeName
138
+ }
139
+ };
140
+ });
141
+ }
150
142
  }
151
- }
152
- return componentBody;
143
+ return componentBody;
153
144
  };
154
- const pickStringifiedId = ({
155
- id
156
- }) => {
157
- if (typeof id === "string") {
158
- return id;
159
- }
160
- return `${id}`;
145
+ const pickStringifiedId = ({ id })=>{
146
+ if (typeof id === 'string') {
147
+ return id;
148
+ }
149
+ return `${id}`;
161
150
  };
162
- const deleteOldComponents = async (uid, componentUID, entityToUpdate, attributeName, componentValue) => {
163
- const previousValue = await strapi.db.query(uid).load(entityToUpdate, attributeName);
164
- const idsToKeep = ___default.default.castArray(componentValue).filter(fp.has("id")).map(pickStringifiedId);
165
- const allIds = ___default.default.castArray(previousValue).filter(fp.has("id")).map(pickStringifiedId);
166
- idsToKeep.forEach((id) => {
167
- if (!allIds.includes(id)) {
168
- throw new strapiUtils.errors.ApplicationError(
169
- `Some of the provided components in ${attributeName} are not related to the entity`
170
- );
151
+ const deleteOldComponents = async (uid, componentUID, entityToUpdate, attributeName, componentValue)=>{
152
+ const previousValue = await strapi.db.query(uid).load(entityToUpdate, attributeName);
153
+ const idsToKeep = _.castArray(componentValue).filter(fp.has('id')).map(pickStringifiedId);
154
+ const allIds = _.castArray(previousValue).filter(fp.has('id')).map(pickStringifiedId);
155
+ idsToKeep.forEach((id)=>{
156
+ if (!allIds.includes(id)) {
157
+ throw new strapiUtils.errors.ApplicationError(`Some of the provided components in ${attributeName} are not related to the entity`);
158
+ }
159
+ });
160
+ const idsToDelete = _.difference(allIds, idsToKeep);
161
+ if (idsToDelete.length > 0) {
162
+ for (const idToDelete of idsToDelete){
163
+ await deleteComponent(componentUID, {
164
+ id: idToDelete
165
+ });
166
+ }
171
167
  }
172
- });
173
- const idsToDelete = ___default.default.difference(allIds, idsToKeep);
174
- if (idsToDelete.length > 0) {
175
- for (const idToDelete of idsToDelete) {
176
- await deleteComponent(componentUID, { id: idToDelete });
168
+ };
169
+ const deleteOldDZComponents = async (uid, entityToUpdate, attributeName, dynamiczoneValues)=>{
170
+ const previousValue = await strapi.db.query(uid).load(entityToUpdate, attributeName);
171
+ const idsToKeep = _.castArray(dynamiczoneValues).filter(fp.has('id')).map((v)=>({
172
+ id: pickStringifiedId(v),
173
+ __component: v.__component
174
+ }));
175
+ const allIds = _.castArray(previousValue).filter(fp.has('id')).map((v)=>({
176
+ id: pickStringifiedId(v),
177
+ __component: v.__component
178
+ }));
179
+ idsToKeep.forEach(({ id, __component })=>{
180
+ if (!allIds.find((el)=>el.id === id && el.__component === __component)) {
181
+ const err = new Error(`Some of the provided components in ${attributeName} are not related to the entity`);
182
+ Object.assign(err, {
183
+ status: 400
184
+ });
185
+ throw err;
186
+ }
187
+ });
188
+ const idsToDelete = allIds.reduce((acc, { id, __component })=>{
189
+ if (!idsToKeep.find((el)=>el.id === id && el.__component === __component)) {
190
+ acc.push({
191
+ id,
192
+ __component
193
+ });
194
+ }
195
+ return acc;
196
+ }, []);
197
+ if (idsToDelete.length > 0) {
198
+ for (const idToDelete of idsToDelete){
199
+ const { id, __component } = idToDelete;
200
+ await deleteComponent(__component, {
201
+ id
202
+ });
203
+ }
177
204
  }
178
- }
179
205
  };
180
- const deleteOldDZComponents = async (uid, entityToUpdate, attributeName, dynamiczoneValues) => {
181
- const previousValue = await strapi.db.query(uid).load(entityToUpdate, attributeName);
182
- const idsToKeep = ___default.default.castArray(dynamiczoneValues).filter(fp.has("id")).map((v) => ({
183
- id: pickStringifiedId(v),
184
- __component: v.__component
185
- }));
186
- const allIds = ___default.default.castArray(previousValue).filter(fp.has("id")).map((v) => ({
187
- id: pickStringifiedId(v),
188
- __component: v.__component
189
- }));
190
- idsToKeep.forEach(({ id, __component }) => {
191
- if (!allIds.find((el) => el.id === id && el.__component === __component)) {
192
- const err = new Error(
193
- `Some of the provided components in ${attributeName} are not related to the entity`
194
- );
195
- Object.assign(err, { status: 400 });
196
- throw err;
206
+ const deleteComponents = async (uid, entityToDelete, { loadComponents = true } = {})=>{
207
+ const { attributes = {} } = strapi.getModel(uid);
208
+ const attributeNames = Object.keys(attributes);
209
+ for (const attributeName of attributeNames){
210
+ const attribute = attributes[attributeName];
211
+ if (attribute.type === 'component' || attribute.type === 'dynamiczone') {
212
+ let value;
213
+ if (loadComponents) {
214
+ value = await strapi.db.query(uid).load(entityToDelete, attributeName);
215
+ } else {
216
+ value = entityToDelete[attributeName];
217
+ }
218
+ if (!value) {
219
+ continue;
220
+ }
221
+ if (attribute.type === 'component') {
222
+ const { component: componentUID } = attribute;
223
+ await strapiUtils.async.map(_.castArray(value), (subValue)=>deleteComponent(componentUID, subValue));
224
+ } else {
225
+ await strapiUtils.async.map(_.castArray(value), (subValue)=>deleteComponent(subValue.__component, subValue));
226
+ }
227
+ continue;
228
+ }
197
229
  }
198
- });
199
- const idsToDelete = allIds.reduce((acc, { id, __component }) => {
200
- if (!idsToKeep.find((el) => el.id === id && el.__component === __component)) {
201
- acc.push({ id, __component });
230
+ };
231
+ /** *************************
232
+ Component queries
233
+ ************************** */ // components can have nested compos so this must be recursive
234
+ const createComponent = async (uid, data)=>{
235
+ const schema = strapi.getModel(uid);
236
+ const componentData = await createComponents(uid, data);
237
+ const transform = fp.pipe(// Make sure we don't save the component with a pre-defined ID
238
+ fp.omit('id'), assignComponentData(schema, componentData));
239
+ return strapi.db.query(uid).create({
240
+ data: transform(data)
241
+ });
242
+ };
243
+ // components can have nested compos so this must be recursive
244
+ const updateComponent = async (uid, componentToUpdate, data)=>{
245
+ const schema = strapi.getModel(uid);
246
+ const componentData = await updateComponents(uid, componentToUpdate, data);
247
+ return strapi.db.query(uid).update({
248
+ where: {
249
+ id: componentToUpdate.id
250
+ },
251
+ data: assignComponentData(schema, componentData, data)
252
+ });
253
+ };
254
+ const updateOrCreateComponent = (componentUID, value)=>{
255
+ if (value === null) {
256
+ return null;
202
257
  }
203
- return acc;
204
- }, []);
205
- if (idsToDelete.length > 0) {
206
- for (const idToDelete of idsToDelete) {
207
- const { id, __component } = idToDelete;
208
- await deleteComponent(__component, { id });
258
+ // update
259
+ if ('id' in value && typeof value.id !== 'undefined') {
260
+ // TODO: verify the compo is associated with the entity
261
+ return updateComponent(componentUID, {
262
+ id: value.id
263
+ }, value);
209
264
  }
210
- }
265
+ // create
266
+ return createComponent(componentUID, value);
211
267
  };
212
- const deleteComponents = async (uid, entityToDelete, { loadComponents = true } = {}) => {
213
- const { attributes = {} } = strapi.getModel(uid);
214
- const attributeNames = Object.keys(attributes);
215
- for (const attributeName of attributeNames) {
216
- const attribute = attributes[attributeName];
217
- if (attribute.type === "component" || attribute.type === "dynamiczone") {
218
- let value;
219
- if (loadComponents) {
220
- value = await strapi.db.query(uid).load(entityToDelete, attributeName);
221
- } else {
222
- value = entityToDelete[attributeName];
223
- }
224
- if (!value) {
225
- continue;
226
- }
227
- if (attribute.type === "component") {
228
- const { component: componentUID } = attribute;
229
- await strapiUtils.async.map(
230
- ___default.default.castArray(value),
231
- (subValue) => deleteComponent(componentUID, subValue)
232
- );
233
- } else {
234
- await strapiUtils.async.map(
235
- ___default.default.castArray(value),
236
- (subValue) => deleteComponent(subValue.__component, subValue)
237
- );
238
- }
239
- continue;
240
- }
241
- }
268
+ const deleteComponent = async (uid, componentToDelete)=>{
269
+ await deleteComponents(uid, componentToDelete);
270
+ await strapi.db.query(uid).delete({
271
+ where: {
272
+ id: componentToDelete.id
273
+ }
274
+ });
242
275
  };
243
- const createComponent = async (uid, data) => {
244
- const schema = strapi.getModel(uid);
245
- const componentData = await createComponents(uid, data);
246
- const transform = fp.pipe(
247
- // Make sure we don't save the component with a pre-defined ID
248
- fp.omit("id"),
249
- assignComponentData(schema, componentData)
250
- );
251
- return strapi.db.query(uid).create({ data: transform(data) });
276
+ const assignComponentData = fp.curry((schema, componentData, data)=>{
277
+ return fp.pipe(omitComponentData(schema), fp.assign(componentData))(data);
278
+ });
279
+ /** *************************
280
+ Component relation handling for document operations
281
+ ************************** */ /**
282
+ * Find the parent entry of a component instance.
283
+ *
284
+ * Given a component model, a specific component instance id, and the list of
285
+ * possible parent content types (those that can embed this component),
286
+ * this function checks each parent's *_cmps join table to see if the component
287
+ * instance is linked to a parent entity.
288
+ *
289
+ * - Returns the parent uid, parent table name, and parent id if found.
290
+ * - Returns null if no parent relationship exists.
291
+ */ const findComponentParent = async (componentSchema, componentId, parentSchemasForComponent, opts)=>{
292
+ if (!componentSchema?.uid) return null;
293
+ const schemaBuilder = strapi.db.getSchemaConnection(opts?.trx);
294
+ const withTrx = (qb)=>opts?.trx ? qb.transacting(opts.trx) : qb;
295
+ for (const parent of parentSchemasForComponent){
296
+ if (!parent.collectionName) continue;
297
+ // Use the exact same functions that create the tables
298
+ const identifiers = strapi.db.metadata.identifiers;
299
+ const joinTableName = transformContentTypesToModels.getComponentJoinTableName(parent.collectionName, identifiers);
300
+ try {
301
+ const tableExists = await schemaBuilder.hasTable(joinTableName);
302
+ if (!tableExists) continue;
303
+ // Use the exact same functions that create the columns
304
+ const entityIdColumn = transformContentTypesToModels.getComponentJoinColumnEntityName(identifiers);
305
+ const componentIdColumn = transformContentTypesToModels.getComponentJoinColumnInverseName(identifiers);
306
+ const componentTypeColumn = transformContentTypesToModels.getComponentTypeColumn(identifiers);
307
+ const parentRow = await withTrx(strapi.db.getConnection(joinTableName)).where({
308
+ [componentIdColumn]: componentId,
309
+ [componentTypeColumn]: componentSchema.uid
310
+ }).first(entityIdColumn);
311
+ if (parentRow) {
312
+ return {
313
+ uid: parent.uid,
314
+ table: parent.collectionName,
315
+ parentId: parentRow[entityIdColumn]
316
+ };
317
+ }
318
+ } catch {
319
+ continue;
320
+ }
321
+ }
322
+ return null;
252
323
  };
253
- const updateComponent = async (uid, componentToUpdate, data) => {
254
- const schema = strapi.getModel(uid);
255
- const componentData = await updateComponents(uid, componentToUpdate, data);
256
- return strapi.db.query(uid).update({
257
- where: {
258
- id: componentToUpdate.id
259
- },
260
- data: assignComponentData(schema, componentData, data)
261
- });
324
+ /**
325
+ * Finds content types that contain the given component and have draft & publish enabled.
326
+ */ const getParentSchemasForComponent = (componentSchema)=>{
327
+ return Object.values(strapi.contentTypes).filter((contentType)=>{
328
+ if (!contentType.options?.draftAndPublish) return false;
329
+ return Object.values(contentType.attributes).some((attr)=>{
330
+ return attr.type === 'component' && attr.component === componentSchema.uid || attr.type === 'dynamiczone' && attr.components?.includes(componentSchema.uid);
331
+ });
332
+ });
262
333
  };
263
- const updateOrCreateComponent = (componentUID, value) => {
264
- if (value === null) {
265
- return null;
266
- }
267
- if ("id" in value && typeof value.id !== "undefined") {
268
- return updateComponent(componentUID, { id: value.id }, value);
269
- }
270
- return createComponent(componentUID, value);
334
+ /**
335
+ * Determines if a component relation should be propagated to a new document version
336
+ * when a document with draft and publish is updated.
337
+ */ const shouldPropagateComponentRelationToNewVersion = async (componentRelation, componentSchema, parentSchemasForComponent, trx)=>{
338
+ // Get the component ID column name using the actual component model name
339
+ const componentIdColumn = strapi.db.metadata.identifiers.getJoinColumnAttributeIdName(_.snakeCase(componentSchema.modelName));
340
+ const componentId = componentRelation[componentIdColumn];
341
+ const parent = await findComponentParent(componentSchema, componentId, parentSchemasForComponent, {
342
+ trx
343
+ });
344
+ // Keep relation if component has no parent entry
345
+ if (!parent?.uid) {
346
+ return true;
347
+ }
348
+ const parentContentType = strapi.contentTypes[parent.uid];
349
+ // Keep relation if parent doesn't have draft & publish enabled
350
+ if (!parentContentType?.options?.draftAndPublish) {
351
+ return true;
352
+ }
353
+ // Discard relation if parent has draft & publish enabled
354
+ return false;
271
355
  };
272
- const deleteComponent = async (uid, componentToDelete) => {
273
- await deleteComponents(uid, componentToDelete);
274
- await strapi.db.query(uid).delete({ where: { id: componentToDelete.id } });
356
+ /**
357
+ * Creates a filter function for component relations that can be passed to the generic
358
+ * unidirectional relations utility
359
+ */ const createComponentRelationFilter = ()=>{
360
+ return async (relation, model, trx)=>{
361
+ // Only apply component-specific filtering for components
362
+ if (model.modelType !== 'component') {
363
+ return true;
364
+ }
365
+ const componentSchema = model;
366
+ const parentSchemas = getParentSchemasForComponent(componentSchema);
367
+ // Exit if no draft & publish parent types exist
368
+ if (parentSchemas.length === 0) {
369
+ return true;
370
+ }
371
+ return shouldPropagateComponentRelationToNewVersion(relation, componentSchema, parentSchemas, trx);
372
+ };
275
373
  };
276
- const assignComponentData = fp.curry(
277
- (schema, componentData, data) => {
278
- return fp.pipe(omitComponentData(schema), fp.assign(componentData))(data);
279
- }
280
- );
374
+
281
375
  exports.assignComponentData = assignComponentData;
376
+ exports.createComponentRelationFilter = createComponentRelationFilter;
282
377
  exports.createComponents = createComponents;
283
378
  exports.deleteComponent = deleteComponent;
284
379
  exports.deleteComponents = deleteComponents;