@strapi/core 0.0.0-experimental.86fea32ae4240d73f76516d7238e302b6b927e88 → 0.0.0-experimental.8a41bddd1fbbac61aa43a961ea1ff74ac586cf55

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 (831) hide show
  1. package/dist/Strapi.d.ts +1 -0
  2. package/dist/Strapi.d.ts.map +1 -1
  3. package/dist/Strapi.js +433 -403
  4. package/dist/Strapi.js.map +1 -1
  5. package/dist/Strapi.mjs +432 -402
  6. package/dist/Strapi.mjs.map +1 -1
  7. package/dist/compile.js +23 -14
  8. package/dist/compile.js.map +1 -1
  9. package/dist/compile.mjs +22 -14
  10. package/dist/compile.mjs.map +1 -1
  11. package/dist/configuration/config-loader.js +110 -97
  12. package/dist/configuration/config-loader.js.map +1 -1
  13. package/dist/configuration/config-loader.mjs +109 -96
  14. package/dist/configuration/config-loader.mjs.map +1 -1
  15. package/dist/configuration/get-dirs.js +31 -29
  16. package/dist/configuration/get-dirs.js.map +1 -1
  17. package/dist/configuration/get-dirs.mjs +30 -30
  18. package/dist/configuration/get-dirs.mjs.map +1 -1
  19. package/dist/configuration/index.d.ts +1 -0
  20. package/dist/configuration/index.d.ts.map +1 -1
  21. package/dist/configuration/index.js +85 -73
  22. package/dist/configuration/index.js.map +1 -1
  23. package/dist/configuration/index.mjs +84 -69
  24. package/dist/configuration/index.mjs.map +1 -1
  25. package/dist/configuration/urls.d.ts.map +1 -1
  26. package/dist/configuration/urls.js +74 -61
  27. package/dist/configuration/urls.js.map +1 -1
  28. package/dist/configuration/urls.mjs +73 -62
  29. package/dist/configuration/urls.mjs.map +1 -1
  30. package/dist/constants.d.ts +3 -0
  31. package/dist/constants.d.ts.map +1 -0
  32. package/dist/constants.js +6 -0
  33. package/dist/constants.js.map +1 -0
  34. package/dist/constants.mjs +4 -0
  35. package/dist/constants.mjs.map +1 -0
  36. package/dist/container.js +27 -23
  37. package/dist/container.js.map +1 -1
  38. package/dist/container.mjs +26 -24
  39. package/dist/container.mjs.map +1 -1
  40. package/dist/core-api/controller/collection-type.js +77 -76
  41. package/dist/core-api/controller/collection-type.js.map +1 -1
  42. package/dist/core-api/controller/collection-type.mjs +76 -77
  43. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  44. package/dist/core-api/controller/index.d.ts.map +1 -1
  45. package/dist/core-api/controller/index.js +64 -48
  46. package/dist/core-api/controller/index.js.map +1 -1
  47. package/dist/core-api/controller/index.mjs +63 -49
  48. package/dist/core-api/controller/index.mjs.map +1 -1
  49. package/dist/core-api/controller/single-type.js +41 -40
  50. package/dist/core-api/controller/single-type.js.map +1 -1
  51. package/dist/core-api/controller/single-type.mjs +40 -41
  52. package/dist/core-api/controller/single-type.mjs.map +1 -1
  53. package/dist/core-api/controller/transform.d.ts +3 -2
  54. package/dist/core-api/controller/transform.d.ts.map +1 -1
  55. package/dist/core-api/controller/transform.js +83 -64
  56. package/dist/core-api/controller/transform.js.map +1 -1
  57. package/dist/core-api/controller/transform.mjs +82 -65
  58. package/dist/core-api/controller/transform.mjs.map +1 -1
  59. package/dist/core-api/routes/index.d.ts +4 -22
  60. package/dist/core-api/routes/index.d.ts.map +1 -1
  61. package/dist/core-api/routes/index.js +205 -61
  62. package/dist/core-api/routes/index.js.map +1 -1
  63. package/dist/core-api/routes/index.mjs +185 -62
  64. package/dist/core-api/routes/index.mjs.map +1 -1
  65. package/dist/core-api/routes/validation/attributes.d.ts +244 -0
  66. package/dist/core-api/routes/validation/attributes.d.ts.map +1 -0
  67. package/dist/core-api/routes/validation/attributes.js +560 -0
  68. package/dist/core-api/routes/validation/attributes.js.map +1 -0
  69. package/dist/core-api/routes/validation/attributes.mjs +521 -0
  70. package/dist/core-api/routes/validation/attributes.mjs.map +1 -0
  71. package/dist/core-api/routes/validation/common.d.ts +105 -0
  72. package/dist/core-api/routes/validation/common.d.ts.map +1 -0
  73. package/dist/core-api/routes/validation/common.js +116 -0
  74. package/dist/core-api/routes/validation/common.js.map +1 -0
  75. package/dist/core-api/routes/validation/common.mjs +95 -0
  76. package/dist/core-api/routes/validation/common.mjs.map +1 -0
  77. package/dist/core-api/routes/validation/component.d.ts +34 -0
  78. package/dist/core-api/routes/validation/component.d.ts.map +1 -0
  79. package/dist/core-api/routes/validation/component.js +45 -0
  80. package/dist/core-api/routes/validation/component.js.map +1 -0
  81. package/dist/core-api/routes/validation/component.mjs +43 -0
  82. package/dist/core-api/routes/validation/component.mjs.map +1 -0
  83. package/dist/core-api/routes/validation/constants.d.ts +8 -0
  84. package/dist/core-api/routes/validation/constants.d.ts.map +1 -0
  85. package/dist/core-api/routes/validation/constants.js +18 -0
  86. package/dist/core-api/routes/validation/constants.js.map +1 -0
  87. package/dist/core-api/routes/validation/constants.mjs +16 -0
  88. package/dist/core-api/routes/validation/constants.mjs.map +1 -0
  89. package/dist/core-api/routes/validation/content-type.d.ts +128 -0
  90. package/dist/core-api/routes/validation/content-type.d.ts.map +1 -0
  91. package/dist/core-api/routes/validation/content-type.js +201 -0
  92. package/dist/core-api/routes/validation/content-type.js.map +1 -0
  93. package/dist/core-api/routes/validation/content-type.mjs +180 -0
  94. package/dist/core-api/routes/validation/content-type.mjs.map +1 -0
  95. package/dist/core-api/routes/validation/index.d.ts +5 -0
  96. package/dist/core-api/routes/validation/index.d.ts.map +1 -0
  97. package/dist/core-api/routes/validation/mappers.d.ts +105 -0
  98. package/dist/core-api/routes/validation/mappers.d.ts.map +1 -0
  99. package/dist/core-api/routes/validation/mappers.js +273 -0
  100. package/dist/core-api/routes/validation/mappers.js.map +1 -0
  101. package/dist/core-api/routes/validation/mappers.mjs +249 -0
  102. package/dist/core-api/routes/validation/mappers.mjs.map +1 -0
  103. package/dist/core-api/routes/validation/utils.d.ts +47 -0
  104. package/dist/core-api/routes/validation/utils.d.ts.map +1 -0
  105. package/dist/core-api/routes/validation/utils.js +128 -0
  106. package/dist/core-api/routes/validation/utils.js.map +1 -0
  107. package/dist/core-api/routes/validation/utils.mjs +106 -0
  108. package/dist/core-api/routes/validation/utils.mjs.map +1 -0
  109. package/dist/core-api/service/collection-type.js +73 -60
  110. package/dist/core-api/service/collection-type.js.map +1 -1
  111. package/dist/core-api/service/collection-type.mjs +72 -62
  112. package/dist/core-api/service/collection-type.mjs.map +1 -1
  113. package/dist/core-api/service/core-service.js +9 -8
  114. package/dist/core-api/service/core-service.js.map +1 -1
  115. package/dist/core-api/service/core-service.mjs +8 -9
  116. package/dist/core-api/service/core-service.mjs.map +1 -1
  117. package/dist/core-api/service/index.js +13 -13
  118. package/dist/core-api/service/index.js.map +1 -1
  119. package/dist/core-api/service/index.mjs +12 -14
  120. package/dist/core-api/service/index.mjs.map +1 -1
  121. package/dist/core-api/service/pagination.js +69 -43
  122. package/dist/core-api/service/pagination.js.map +1 -1
  123. package/dist/core-api/service/pagination.mjs +68 -47
  124. package/dist/core-api/service/pagination.mjs.map +1 -1
  125. package/dist/core-api/service/single-type.js +43 -39
  126. package/dist/core-api/service/single-type.js.map +1 -1
  127. package/dist/core-api/service/single-type.mjs +42 -41
  128. package/dist/core-api/service/single-type.mjs.map +1 -1
  129. package/dist/domain/content-type/index.d.ts.map +1 -1
  130. package/dist/domain/content-type/index.js +110 -99
  131. package/dist/domain/content-type/index.js.map +1 -1
  132. package/dist/domain/content-type/index.mjs +109 -99
  133. package/dist/domain/content-type/index.mjs.map +1 -1
  134. package/dist/domain/content-type/validator.js +84 -69
  135. package/dist/domain/content-type/validator.js.map +1 -1
  136. package/dist/domain/content-type/validator.mjs +83 -68
  137. package/dist/domain/content-type/validator.mjs.map +1 -1
  138. package/dist/domain/module/index.d.ts.map +1 -1
  139. package/dist/domain/module/index.js +112 -100
  140. package/dist/domain/module/index.js.map +1 -1
  141. package/dist/domain/module/index.mjs +111 -99
  142. package/dist/domain/module/index.mjs.map +1 -1
  143. package/dist/domain/module/validation.js +25 -20
  144. package/dist/domain/module/validation.js.map +1 -1
  145. package/dist/domain/module/validation.mjs +24 -21
  146. package/dist/domain/module/validation.mjs.map +1 -1
  147. package/dist/ee/index.d.ts +7 -0
  148. package/dist/ee/index.d.ts.map +1 -1
  149. package/dist/ee/index.js +197 -132
  150. package/dist/ee/index.js.map +1 -1
  151. package/dist/ee/index.mjs +196 -134
  152. package/dist/ee/index.mjs.map +1 -1
  153. package/dist/ee/license.d.ts +3 -1
  154. package/dist/ee/license.d.ts.map +1 -1
  155. package/dist/ee/license.js +105 -75
  156. package/dist/ee/license.js.map +1 -1
  157. package/dist/ee/license.mjs +103 -76
  158. package/dist/ee/license.mjs.map +1 -1
  159. package/dist/factories.d.ts +3 -1
  160. package/dist/factories.d.ts.map +1 -1
  161. package/dist/factories.js +80 -67
  162. package/dist/factories.js.map +1 -1
  163. package/dist/factories.mjs +77 -70
  164. package/dist/factories.mjs.map +1 -1
  165. package/dist/index.js +29 -26
  166. package/dist/index.js.map +1 -1
  167. package/dist/index.mjs +29 -29
  168. package/dist/index.mjs.map +1 -1
  169. package/dist/loaders/admin.d.ts.map +1 -1
  170. package/dist/loaders/admin.js +21 -20
  171. package/dist/loaders/admin.js.map +1 -1
  172. package/dist/loaders/admin.mjs +20 -20
  173. package/dist/loaders/admin.mjs.map +1 -1
  174. package/dist/loaders/apis.js +143 -120
  175. package/dist/loaders/apis.js.map +1 -1
  176. package/dist/loaders/apis.mjs +142 -119
  177. package/dist/loaders/apis.mjs.map +1 -1
  178. package/dist/loaders/components.js +33 -34
  179. package/dist/loaders/components.js.map +1 -1
  180. package/dist/loaders/components.mjs +32 -34
  181. package/dist/loaders/components.mjs.map +1 -1
  182. package/dist/loaders/index.js +22 -20
  183. package/dist/loaders/index.js.map +1 -1
  184. package/dist/loaders/index.mjs +21 -21
  185. package/dist/loaders/index.mjs.map +1 -1
  186. package/dist/loaders/middlewares.js +29 -25
  187. package/dist/loaders/middlewares.js.map +1 -1
  188. package/dist/loaders/middlewares.mjs +28 -25
  189. package/dist/loaders/middlewares.mjs.map +1 -1
  190. package/dist/loaders/plugins/get-enabled-plugins.js +126 -131
  191. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  192. package/dist/loaders/plugins/get-enabled-plugins.mjs +125 -108
  193. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  194. package/dist/loaders/plugins/get-user-plugins-config.js +25 -24
  195. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  196. package/dist/loaders/plugins/get-user-plugins-config.mjs +24 -23
  197. package/dist/loaders/plugins/get-user-plugins-config.mjs.map +1 -1
  198. package/dist/loaders/plugins/index.js +132 -122
  199. package/dist/loaders/plugins/index.js.map +1 -1
  200. package/dist/loaders/plugins/index.mjs +121 -112
  201. package/dist/loaders/plugins/index.mjs.map +1 -1
  202. package/dist/loaders/policies.js +24 -20
  203. package/dist/loaders/policies.js.map +1 -1
  204. package/dist/loaders/policies.mjs +23 -20
  205. package/dist/loaders/policies.mjs.map +1 -1
  206. package/dist/loaders/sanitizers.js +10 -4
  207. package/dist/loaders/sanitizers.js.map +1 -1
  208. package/dist/loaders/sanitizers.mjs +9 -6
  209. package/dist/loaders/sanitizers.mjs.map +1 -1
  210. package/dist/loaders/src-index.js +35 -27
  211. package/dist/loaders/src-index.js.map +1 -1
  212. package/dist/loaders/src-index.mjs +34 -29
  213. package/dist/loaders/src-index.mjs.map +1 -1
  214. package/dist/loaders/validators.js +9 -4
  215. package/dist/loaders/validators.js.map +1 -1
  216. package/dist/loaders/validators.mjs +8 -6
  217. package/dist/loaders/validators.mjs.map +1 -1
  218. package/dist/middlewares/body.d.ts.map +1 -1
  219. package/dist/middlewares/body.js +58 -54
  220. package/dist/middlewares/body.js.map +1 -1
  221. package/dist/middlewares/body.mjs +57 -51
  222. package/dist/middlewares/body.mjs.map +1 -1
  223. package/dist/middlewares/compression.js +6 -6
  224. package/dist/middlewares/compression.js.map +1 -1
  225. package/dist/middlewares/compression.mjs +5 -5
  226. package/dist/middlewares/compression.mjs.map +1 -1
  227. package/dist/middlewares/cors.d.ts +9 -1
  228. package/dist/middlewares/cors.d.ts.map +1 -1
  229. package/dist/middlewares/cors.js +81 -48
  230. package/dist/middlewares/cors.js.map +1 -1
  231. package/dist/middlewares/cors.mjs +78 -46
  232. package/dist/middlewares/cors.mjs.map +1 -1
  233. package/dist/middlewares/errors.js +32 -30
  234. package/dist/middlewares/errors.js.map +1 -1
  235. package/dist/middlewares/errors.mjs +31 -31
  236. package/dist/middlewares/errors.mjs.map +1 -1
  237. package/dist/middlewares/favicon.js +27 -17
  238. package/dist/middlewares/favicon.js.map +1 -1
  239. package/dist/middlewares/favicon.mjs +26 -16
  240. package/dist/middlewares/favicon.mjs.map +1 -1
  241. package/dist/middlewares/index.js +32 -30
  242. package/dist/middlewares/index.js.map +1 -1
  243. package/dist/middlewares/index.mjs +31 -31
  244. package/dist/middlewares/index.mjs.map +1 -1
  245. package/dist/middlewares/ip.js +6 -6
  246. package/dist/middlewares/ip.js.map +1 -1
  247. package/dist/middlewares/ip.mjs +5 -5
  248. package/dist/middlewares/ip.mjs.map +1 -1
  249. package/dist/middlewares/logger.js +10 -9
  250. package/dist/middlewares/logger.js.map +1 -1
  251. package/dist/middlewares/logger.mjs +9 -10
  252. package/dist/middlewares/logger.mjs.map +1 -1
  253. package/dist/middlewares/powered-by.js +13 -9
  254. package/dist/middlewares/powered-by.js.map +1 -1
  255. package/dist/middlewares/powered-by.mjs +12 -10
  256. package/dist/middlewares/powered-by.mjs.map +1 -1
  257. package/dist/middlewares/public.js +33 -29
  258. package/dist/middlewares/public.js.map +1 -1
  259. package/dist/middlewares/public.mjs +32 -28
  260. package/dist/middlewares/public.mjs.map +1 -1
  261. package/dist/middlewares/query.js +35 -32
  262. package/dist/middlewares/query.js.map +1 -1
  263. package/dist/middlewares/query.mjs +34 -31
  264. package/dist/middlewares/query.mjs.map +1 -1
  265. package/dist/middlewares/response-time.js +10 -9
  266. package/dist/middlewares/response-time.js.map +1 -1
  267. package/dist/middlewares/response-time.mjs +9 -10
  268. package/dist/middlewares/response-time.mjs.map +1 -1
  269. package/dist/middlewares/responses.js +14 -12
  270. package/dist/middlewares/responses.js.map +1 -1
  271. package/dist/middlewares/responses.mjs +13 -13
  272. package/dist/middlewares/responses.mjs.map +1 -1
  273. package/dist/middlewares/security.js +109 -71
  274. package/dist/middlewares/security.js.map +1 -1
  275. package/dist/middlewares/security.mjs +108 -70
  276. package/dist/middlewares/security.mjs.map +1 -1
  277. package/dist/middlewares/session.js +26 -25
  278. package/dist/middlewares/session.js.map +1 -1
  279. package/dist/middlewares/session.mjs +25 -24
  280. package/dist/middlewares/session.mjs.map +1 -1
  281. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +2 -2
  282. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -1
  283. package/dist/migrations/database/5.0.0-discard-drafts.js +154 -80
  284. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -1
  285. package/dist/migrations/database/5.0.0-discard-drafts.mjs +153 -82
  286. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -1
  287. package/dist/migrations/draft-publish.d.ts +1 -1
  288. package/dist/migrations/draft-publish.d.ts.map +1 -1
  289. package/dist/migrations/draft-publish.js +61 -34
  290. package/dist/migrations/draft-publish.js.map +1 -1
  291. package/dist/migrations/draft-publish.mjs +60 -36
  292. package/dist/migrations/draft-publish.mjs.map +1 -1
  293. package/dist/migrations/first-published-at.d.ts +4 -0
  294. package/dist/migrations/first-published-at.d.ts.map +1 -0
  295. package/dist/migrations/first-published-at.js +51 -0
  296. package/dist/migrations/first-published-at.js.map +1 -0
  297. package/dist/migrations/first-published-at.mjs +49 -0
  298. package/dist/migrations/first-published-at.mjs.map +1 -0
  299. package/dist/migrations/i18n.js +62 -45
  300. package/dist/migrations/i18n.js.map +1 -1
  301. package/dist/migrations/i18n.mjs +61 -47
  302. package/dist/migrations/i18n.mjs.map +1 -1
  303. package/dist/migrations/index.d.ts.map +1 -1
  304. package/dist/migrations/index.js +29 -10
  305. package/dist/migrations/index.js.map +1 -1
  306. package/dist/migrations/index.mjs +28 -12
  307. package/dist/migrations/index.mjs.map +1 -1
  308. package/dist/package.json.js +187 -0
  309. package/dist/package.json.js.map +1 -0
  310. package/dist/package.json.mjs +164 -0
  311. package/dist/package.json.mjs.map +1 -0
  312. package/dist/providers/admin.js +27 -17
  313. package/dist/providers/admin.js.map +1 -1
  314. package/dist/providers/admin.mjs +26 -19
  315. package/dist/providers/admin.mjs.map +1 -1
  316. package/dist/providers/coreStore.js +13 -8
  317. package/dist/providers/coreStore.js.map +1 -1
  318. package/dist/providers/coreStore.mjs +12 -10
  319. package/dist/providers/coreStore.mjs.map +1 -1
  320. package/dist/providers/cron.js +19 -16
  321. package/dist/providers/cron.js.map +1 -1
  322. package/dist/providers/cron.mjs +18 -18
  323. package/dist/providers/cron.mjs.map +1 -1
  324. package/dist/providers/index.d.ts.map +1 -1
  325. package/dist/providers/index.js +20 -9
  326. package/dist/providers/index.js.map +1 -1
  327. package/dist/providers/index.mjs +19 -10
  328. package/dist/providers/index.mjs.map +1 -1
  329. package/dist/providers/provider.js +4 -3
  330. package/dist/providers/provider.js.map +1 -1
  331. package/dist/providers/provider.mjs +3 -4
  332. package/dist/providers/provider.mjs.map +1 -1
  333. package/dist/providers/registries.js +37 -32
  334. package/dist/providers/registries.js.map +1 -1
  335. package/dist/providers/registries.mjs +36 -34
  336. package/dist/providers/registries.mjs.map +1 -1
  337. package/dist/providers/sessionManager.d.ts +3 -0
  338. package/dist/providers/sessionManager.d.ts.map +1 -0
  339. package/dist/providers/sessionManager.js +21 -0
  340. package/dist/providers/sessionManager.js.map +1 -0
  341. package/dist/providers/sessionManager.mjs +19 -0
  342. package/dist/providers/sessionManager.mjs.map +1 -0
  343. package/dist/providers/telemetry.js +19 -16
  344. package/dist/providers/telemetry.js.map +1 -1
  345. package/dist/providers/telemetry.mjs +18 -18
  346. package/dist/providers/telemetry.mjs.map +1 -1
  347. package/dist/providers/webhooks.js +28 -26
  348. package/dist/providers/webhooks.js.map +1 -1
  349. package/dist/providers/webhooks.mjs +27 -28
  350. package/dist/providers/webhooks.mjs.map +1 -1
  351. package/dist/registries/apis.js +23 -20
  352. package/dist/registries/apis.js.map +1 -1
  353. package/dist/registries/apis.mjs +22 -22
  354. package/dist/registries/apis.mjs.map +1 -1
  355. package/dist/registries/components.js +35 -37
  356. package/dist/registries/components.js.map +1 -1
  357. package/dist/registries/components.mjs +34 -39
  358. package/dist/registries/components.mjs.map +1 -1
  359. package/dist/registries/content-types.js +54 -59
  360. package/dist/registries/content-types.js.map +1 -1
  361. package/dist/registries/content-types.mjs +53 -61
  362. package/dist/registries/content-types.mjs.map +1 -1
  363. package/dist/registries/controllers.js +70 -71
  364. package/dist/registries/controllers.js.map +1 -1
  365. package/dist/registries/controllers.mjs +69 -73
  366. package/dist/registries/controllers.mjs.map +1 -1
  367. package/dist/registries/custom-fields.js +75 -65
  368. package/dist/registries/custom-fields.js.map +1 -1
  369. package/dist/registries/custom-fields.mjs +74 -67
  370. package/dist/registries/custom-fields.mjs.map +1 -1
  371. package/dist/registries/hooks.js +46 -49
  372. package/dist/registries/hooks.js.map +1 -1
  373. package/dist/registries/hooks.mjs +45 -51
  374. package/dist/registries/hooks.mjs.map +1 -1
  375. package/dist/registries/middlewares.js +49 -51
  376. package/dist/registries/middlewares.js.map +1 -1
  377. package/dist/registries/middlewares.mjs +48 -53
  378. package/dist/registries/middlewares.mjs.map +1 -1
  379. package/dist/registries/models.js +14 -13
  380. package/dist/registries/models.js.map +1 -1
  381. package/dist/registries/models.mjs +13 -14
  382. package/dist/registries/models.mjs.map +1 -1
  383. package/dist/registries/modules.js +39 -36
  384. package/dist/registries/modules.js.map +1 -1
  385. package/dist/registries/modules.mjs +38 -38
  386. package/dist/registries/modules.mjs.map +1 -1
  387. package/dist/registries/namespace.js +21 -20
  388. package/dist/registries/namespace.js.map +1 -1
  389. package/dist/registries/namespace.mjs +20 -23
  390. package/dist/registries/namespace.mjs.map +1 -1
  391. package/dist/registries/plugins.js +23 -20
  392. package/dist/registries/plugins.js.map +1 -1
  393. package/dist/registries/plugins.mjs +22 -22
  394. package/dist/registries/plugins.mjs.map +1 -1
  395. package/dist/registries/policies.js +103 -96
  396. package/dist/registries/policies.js.map +1 -1
  397. package/dist/registries/policies.mjs +102 -98
  398. package/dist/registries/policies.mjs.map +1 -1
  399. package/dist/registries/sanitizers.js +23 -22
  400. package/dist/registries/sanitizers.js.map +1 -1
  401. package/dist/registries/sanitizers.mjs +22 -22
  402. package/dist/registries/sanitizers.mjs.map +1 -1
  403. package/dist/registries/services.js +71 -71
  404. package/dist/registries/services.js.map +1 -1
  405. package/dist/registries/services.mjs +70 -73
  406. package/dist/registries/services.mjs.map +1 -1
  407. package/dist/registries/validators.js +23 -22
  408. package/dist/registries/validators.js.map +1 -1
  409. package/dist/registries/validators.mjs +22 -22
  410. package/dist/registries/validators.mjs.map +1 -1
  411. package/dist/services/auth/index.js +74 -74
  412. package/dist/services/auth/index.js.map +1 -1
  413. package/dist/services/auth/index.mjs +73 -74
  414. package/dist/services/auth/index.mjs.map +1 -1
  415. package/dist/services/config.js +47 -43
  416. package/dist/services/config.js.map +1 -1
  417. package/dist/services/config.mjs +46 -44
  418. package/dist/services/config.mjs.map +1 -1
  419. package/dist/services/content-api/index.d.ts +1 -1
  420. package/dist/services/content-api/index.d.ts.map +1 -1
  421. package/dist/services/content-api/index.js +80 -79
  422. package/dist/services/content-api/index.js.map +1 -1
  423. package/dist/services/content-api/index.mjs +79 -79
  424. package/dist/services/content-api/index.mjs.map +1 -1
  425. package/dist/services/content-api/permissions/engine.js +8 -5
  426. package/dist/services/content-api/permissions/engine.js.map +1 -1
  427. package/dist/services/content-api/permissions/engine.mjs +7 -5
  428. package/dist/services/content-api/permissions/engine.mjs.map +1 -1
  429. package/dist/services/content-api/permissions/index.js +101 -81
  430. package/dist/services/content-api/permissions/index.js.map +1 -1
  431. package/dist/services/content-api/permissions/index.mjs +100 -81
  432. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  433. package/dist/services/content-api/permissions/providers/action.js +17 -14
  434. package/dist/services/content-api/permissions/providers/action.js.map +1 -1
  435. package/dist/services/content-api/permissions/providers/action.mjs +16 -16
  436. package/dist/services/content-api/permissions/providers/action.mjs.map +1 -1
  437. package/dist/services/content-api/permissions/providers/condition.js +17 -14
  438. package/dist/services/content-api/permissions/providers/condition.js.map +1 -1
  439. package/dist/services/content-api/permissions/providers/condition.mjs +16 -16
  440. package/dist/services/content-api/permissions/providers/condition.mjs.map +1 -1
  441. package/dist/services/content-source-maps.d.ts +13 -0
  442. package/dist/services/content-source-maps.d.ts.map +1 -0
  443. package/dist/services/content-source-maps.js +108 -0
  444. package/dist/services/content-source-maps.js.map +1 -0
  445. package/dist/services/content-source-maps.mjs +106 -0
  446. package/dist/services/content-source-maps.mjs.map +1 -0
  447. package/dist/services/core-store.d.ts +2 -2
  448. package/dist/services/core-store.d.ts.map +1 -1
  449. package/dist/services/core-store.js +115 -95
  450. package/dist/services/core-store.js.map +1 -1
  451. package/dist/services/core-store.mjs +114 -97
  452. package/dist/services/core-store.mjs.map +1 -1
  453. package/dist/services/cron.js +74 -60
  454. package/dist/services/cron.js.map +1 -1
  455. package/dist/services/cron.mjs +73 -62
  456. package/dist/services/cron.mjs.map +1 -1
  457. package/dist/services/custom-fields.js +9 -7
  458. package/dist/services/custom-fields.js.map +1 -1
  459. package/dist/services/custom-fields.mjs +8 -9
  460. package/dist/services/custom-fields.mjs.map +1 -1
  461. package/dist/services/document-service/attributes/index.js +23 -18
  462. package/dist/services/document-service/attributes/index.js.map +1 -1
  463. package/dist/services/document-service/attributes/index.mjs +22 -19
  464. package/dist/services/document-service/attributes/index.mjs.map +1 -1
  465. package/dist/services/document-service/attributes/transforms.js +16 -15
  466. package/dist/services/document-service/attributes/transforms.js.map +1 -1
  467. package/dist/services/document-service/attributes/transforms.mjs +15 -15
  468. package/dist/services/document-service/attributes/transforms.mjs.map +1 -1
  469. package/dist/services/document-service/common.d.ts +1 -1
  470. package/dist/services/document-service/common.d.ts.map +1 -1
  471. package/dist/services/document-service/common.js +5 -4
  472. package/dist/services/document-service/common.js.map +1 -1
  473. package/dist/services/document-service/common.mjs +4 -5
  474. package/dist/services/document-service/common.mjs.map +1 -1
  475. package/dist/services/document-service/components.d.ts +6 -1
  476. package/dist/services/document-service/components.d.ts.map +1 -1
  477. package/dist/services/document-service/components.js +351 -256
  478. package/dist/services/document-service/components.js.map +1 -1
  479. package/dist/services/document-service/components.mjs +349 -261
  480. package/dist/services/document-service/components.mjs.map +1 -1
  481. package/dist/services/document-service/draft-and-publish.d.ts +1 -1
  482. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  483. package/dist/services/document-service/draft-and-publish.js +88 -48
  484. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  485. package/dist/services/document-service/draft-and-publish.mjs +87 -54
  486. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  487. package/dist/services/document-service/entries.d.ts +2 -2
  488. package/dist/services/document-service/entries.d.ts.map +1 -1
  489. package/dist/services/document-service/entries.js +151 -92
  490. package/dist/services/document-service/entries.js.map +1 -1
  491. package/dist/services/document-service/entries.mjs +150 -93
  492. package/dist/services/document-service/entries.mjs.map +1 -1
  493. package/dist/services/document-service/events.d.ts +1 -1
  494. package/dist/services/document-service/events.d.ts.map +1 -1
  495. package/dist/services/document-service/events.js +52 -40
  496. package/dist/services/document-service/events.js.map +1 -1
  497. package/dist/services/document-service/events.mjs +51 -41
  498. package/dist/services/document-service/events.mjs.map +1 -1
  499. package/dist/services/document-service/first-published-at.d.ts +7 -0
  500. package/dist/services/document-service/first-published-at.d.ts.map +1 -0
  501. package/dist/services/document-service/first-published-at.js +31 -0
  502. package/dist/services/document-service/first-published-at.js.map +1 -0
  503. package/dist/services/document-service/first-published-at.mjs +28 -0
  504. package/dist/services/document-service/first-published-at.mjs.map +1 -0
  505. package/dist/services/document-service/index.d.ts +2 -1
  506. package/dist/services/document-service/index.d.ts.map +1 -1
  507. package/dist/services/document-service/index.js +53 -32
  508. package/dist/services/document-service/index.js.map +1 -1
  509. package/dist/services/document-service/index.mjs +52 -33
  510. package/dist/services/document-service/index.mjs.map +1 -1
  511. package/dist/services/document-service/internationalization.d.ts +6 -1
  512. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  513. package/dist/services/document-service/internationalization.js +94 -46
  514. package/dist/services/document-service/internationalization.js.map +1 -1
  515. package/dist/services/document-service/internationalization.mjs +92 -50
  516. package/dist/services/document-service/internationalization.mjs.map +1 -1
  517. package/dist/services/document-service/middlewares/errors.js +23 -19
  518. package/dist/services/document-service/middlewares/errors.js.map +1 -1
  519. package/dist/services/document-service/middlewares/errors.mjs +22 -20
  520. package/dist/services/document-service/middlewares/errors.mjs.map +1 -1
  521. package/dist/services/document-service/middlewares/middleware-manager.js +46 -44
  522. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  523. package/dist/services/document-service/middlewares/middleware-manager.mjs +45 -45
  524. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  525. package/dist/services/document-service/params.js +11 -5
  526. package/dist/services/document-service/params.js.map +1 -1
  527. package/dist/services/document-service/params.mjs +10 -6
  528. package/dist/services/document-service/params.mjs.map +1 -1
  529. package/dist/services/document-service/repository.d.ts.map +1 -1
  530. package/dist/services/document-service/repository.js +362 -314
  531. package/dist/services/document-service/repository.js.map +1 -1
  532. package/dist/services/document-service/repository.mjs +361 -315
  533. package/dist/services/document-service/repository.mjs.map +1 -1
  534. package/dist/services/document-service/transform/data.js +22 -12
  535. package/dist/services/document-service/transform/data.js.map +1 -1
  536. package/dist/services/document-service/transform/data.mjs +21 -13
  537. package/dist/services/document-service/transform/data.mjs.map +1 -1
  538. package/dist/services/document-service/transform/fields.js +26 -17
  539. package/dist/services/document-service/transform/fields.js.map +1 -1
  540. package/dist/services/document-service/transform/fields.mjs +25 -18
  541. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  542. package/dist/services/document-service/transform/id-map.d.ts +1 -1
  543. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  544. package/dist/services/document-service/transform/id-map.js +116 -69
  545. package/dist/services/document-service/transform/id-map.js.map +1 -1
  546. package/dist/services/document-service/transform/id-map.mjs +115 -70
  547. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  548. package/dist/services/document-service/transform/id-transform.d.ts +1 -1
  549. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  550. package/dist/services/document-service/transform/id-transform.js +37 -29
  551. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  552. package/dist/services/document-service/transform/id-transform.mjs +36 -30
  553. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  554. package/dist/services/document-service/transform/populate.js +23 -18
  555. package/dist/services/document-service/transform/populate.js.map +1 -1
  556. package/dist/services/document-service/transform/populate.mjs +22 -19
  557. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  558. package/dist/services/document-service/transform/query.js +11 -6
  559. package/dist/services/document-service/transform/query.js.map +1 -1
  560. package/dist/services/document-service/transform/query.mjs +10 -7
  561. package/dist/services/document-service/transform/query.mjs.map +1 -1
  562. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +1 -1
  563. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  564. package/dist/services/document-service/transform/relations/extract/data-ids.js +71 -48
  565. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  566. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +70 -49
  567. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  568. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  569. package/dist/services/document-service/transform/relations/transform/data-ids.js +97 -63
  570. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  571. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +96 -64
  572. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  573. package/dist/services/document-service/transform/relations/transform/default-locale.js +47 -29
  574. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -1
  575. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +46 -30
  576. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -1
  577. package/dist/services/document-service/transform/relations/utils/dp.d.ts +1 -1
  578. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  579. package/dist/services/document-service/transform/relations/utils/dp.js +52 -26
  580. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  581. package/dist/services/document-service/transform/relations/utils/dp.mjs +51 -27
  582. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  583. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +1 -1
  584. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  585. package/dist/services/document-service/transform/relations/utils/i18n.js +20 -18
  586. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  587. package/dist/services/document-service/transform/relations/utils/i18n.mjs +19 -21
  588. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  589. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -1
  590. package/dist/services/document-service/transform/relations/utils/map-relation.js +116 -77
  591. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -1
  592. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +115 -79
  593. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -1
  594. package/dist/services/document-service/utils/bidirectional-relations.d.ts +95 -0
  595. package/dist/services/document-service/utils/bidirectional-relations.d.ts.map +1 -0
  596. package/dist/services/document-service/utils/bidirectional-relations.js +148 -0
  597. package/dist/services/document-service/utils/bidirectional-relations.js.map +1 -0
  598. package/dist/services/document-service/utils/bidirectional-relations.mjs +145 -0
  599. package/dist/services/document-service/utils/bidirectional-relations.mjs.map +1 -0
  600. package/dist/services/document-service/utils/populate.d.ts +1 -1
  601. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  602. package/dist/services/document-service/utils/populate.js +66 -42
  603. package/dist/services/document-service/utils/populate.js.map +1 -1
  604. package/dist/services/document-service/utils/populate.mjs +65 -43
  605. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  606. package/dist/services/document-service/utils/unidirectional-relations.d.ts +21 -5
  607. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -1
  608. package/dist/services/document-service/utils/unidirectional-relations.js +124 -58
  609. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -1
  610. package/dist/services/document-service/utils/unidirectional-relations.mjs +123 -60
  611. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -1
  612. package/dist/services/entity-service/index.js +230 -161
  613. package/dist/services/entity-service/index.js.map +1 -1
  614. package/dist/services/entity-service/index.mjs +229 -160
  615. package/dist/services/entity-service/index.mjs.map +1 -1
  616. package/dist/services/entity-validator/blocks-validator.js +135 -103
  617. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  618. package/dist/services/entity-validator/blocks-validator.mjs +134 -104
  619. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  620. package/dist/services/entity-validator/index.d.ts +1 -1
  621. package/dist/services/entity-validator/index.d.ts.map +1 -1
  622. package/dist/services/entity-validator/index.js +370 -366
  623. package/dist/services/entity-validator/index.js.map +1 -1
  624. package/dist/services/entity-validator/index.mjs +366 -363
  625. package/dist/services/entity-validator/index.mjs.map +1 -1
  626. package/dist/services/entity-validator/validators.d.ts +1 -0
  627. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  628. package/dist/services/entity-validator/validators.js +270 -209
  629. package/dist/services/entity-validator/validators.js.map +1 -1
  630. package/dist/services/entity-validator/validators.mjs +269 -215
  631. package/dist/services/entity-validator/validators.mjs.map +1 -1
  632. package/dist/services/errors.js +65 -65
  633. package/dist/services/errors.js.map +1 -1
  634. package/dist/services/errors.mjs +64 -66
  635. package/dist/services/errors.mjs.map +1 -1
  636. package/dist/services/event-hub.js +82 -69
  637. package/dist/services/event-hub.js.map +1 -1
  638. package/dist/services/event-hub.mjs +81 -71
  639. package/dist/services/event-hub.mjs.map +1 -1
  640. package/dist/services/features.js +19 -14
  641. package/dist/services/features.js.map +1 -1
  642. package/dist/services/features.mjs +18 -15
  643. package/dist/services/features.mjs.map +1 -1
  644. package/dist/services/fs.js +41 -40
  645. package/dist/services/fs.js.map +1 -1
  646. package/dist/services/fs.mjs +40 -39
  647. package/dist/services/fs.mjs.map +1 -1
  648. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  649. package/dist/services/metrics/admin-user-hash.js +13 -11
  650. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  651. package/dist/services/metrics/admin-user-hash.mjs +12 -10
  652. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  653. package/dist/services/metrics/index.d.ts +1 -1
  654. package/dist/services/metrics/index.d.ts.map +1 -1
  655. package/dist/services/metrics/index.js +48 -40
  656. package/dist/services/metrics/index.js.map +1 -1
  657. package/dist/services/metrics/index.mjs +47 -42
  658. package/dist/services/metrics/index.mjs.map +1 -1
  659. package/dist/services/metrics/is-truthy.js +13 -6
  660. package/dist/services/metrics/is-truthy.js.map +1 -1
  661. package/dist/services/metrics/is-truthy.mjs +12 -6
  662. package/dist/services/metrics/is-truthy.mjs.map +1 -1
  663. package/dist/services/metrics/middleware.d.ts +2 -1
  664. package/dist/services/metrics/middleware.d.ts.map +1 -1
  665. package/dist/services/metrics/middleware.js +37 -22
  666. package/dist/services/metrics/middleware.js.map +1 -1
  667. package/dist/services/metrics/middleware.mjs +36 -24
  668. package/dist/services/metrics/middleware.mjs.map +1 -1
  669. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  670. package/dist/services/metrics/rate-limiter.js +24 -19
  671. package/dist/services/metrics/rate-limiter.js.map +1 -1
  672. package/dist/services/metrics/rate-limiter.mjs +23 -21
  673. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  674. package/dist/services/metrics/sender.d.ts.map +1 -1
  675. package/dist/services/metrics/sender.js +78 -69
  676. package/dist/services/metrics/sender.js.map +1 -1
  677. package/dist/services/metrics/sender.mjs +77 -64
  678. package/dist/services/metrics/sender.mjs.map +1 -1
  679. package/dist/services/query-params.js +13 -10
  680. package/dist/services/query-params.js.map +1 -1
  681. package/dist/services/query-params.mjs +12 -12
  682. package/dist/services/query-params.mjs.map +1 -1
  683. package/dist/services/reloader.js +35 -32
  684. package/dist/services/reloader.js.map +1 -1
  685. package/dist/services/reloader.mjs +34 -33
  686. package/dist/services/reloader.mjs.map +1 -1
  687. package/dist/services/request-context.js +11 -8
  688. package/dist/services/request-context.js.map +1 -1
  689. package/dist/services/request-context.mjs +10 -10
  690. package/dist/services/request-context.mjs.map +1 -1
  691. package/dist/services/server/admin-api.js +11 -10
  692. package/dist/services/server/admin-api.js.map +1 -1
  693. package/dist/services/server/admin-api.mjs +10 -11
  694. package/dist/services/server/admin-api.mjs.map +1 -1
  695. package/dist/services/server/api.js +33 -27
  696. package/dist/services/server/api.js.map +1 -1
  697. package/dist/services/server/api.mjs +32 -26
  698. package/dist/services/server/api.mjs.map +1 -1
  699. package/dist/services/server/compose-endpoint.js +116 -105
  700. package/dist/services/server/compose-endpoint.js.map +1 -1
  701. package/dist/services/server/compose-endpoint.mjs +115 -105
  702. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  703. package/dist/services/server/content-api.js +11 -9
  704. package/dist/services/server/content-api.js.map +1 -1
  705. package/dist/services/server/content-api.mjs +10 -10
  706. package/dist/services/server/content-api.mjs.map +1 -1
  707. package/dist/services/server/http-server.js +48 -44
  708. package/dist/services/server/http-server.js.map +1 -1
  709. package/dist/services/server/http-server.mjs +47 -43
  710. package/dist/services/server/http-server.mjs.map +1 -1
  711. package/dist/services/server/index.js +85 -82
  712. package/dist/services/server/index.js.map +1 -1
  713. package/dist/services/server/index.mjs +84 -81
  714. package/dist/services/server/index.mjs.map +1 -1
  715. package/dist/services/server/koa.js +49 -47
  716. package/dist/services/server/koa.js.map +1 -1
  717. package/dist/services/server/koa.mjs +48 -44
  718. package/dist/services/server/koa.mjs.map +1 -1
  719. package/dist/services/server/middleware.js +86 -82
  720. package/dist/services/server/middleware.js.map +1 -1
  721. package/dist/services/server/middleware.mjs +85 -82
  722. package/dist/services/server/middleware.mjs.map +1 -1
  723. package/dist/services/server/policy.js +24 -17
  724. package/dist/services/server/policy.js.map +1 -1
  725. package/dist/services/server/policy.mjs +23 -18
  726. package/dist/services/server/policy.mjs.map +1 -1
  727. package/dist/services/server/register-middlewares.js +68 -61
  728. package/dist/services/server/register-middlewares.js.map +1 -1
  729. package/dist/services/server/register-middlewares.mjs +67 -63
  730. package/dist/services/server/register-middlewares.mjs.map +1 -1
  731. package/dist/services/server/register-routes.js +109 -66
  732. package/dist/services/server/register-routes.js.map +1 -1
  733. package/dist/services/server/register-routes.mjs +108 -66
  734. package/dist/services/server/register-routes.mjs.map +1 -1
  735. package/dist/services/server/routing.d.ts +10 -0
  736. package/dist/services/server/routing.d.ts.map +1 -1
  737. package/dist/services/server/routing.js +100 -81
  738. package/dist/services/server/routing.js.map +1 -1
  739. package/dist/services/server/routing.mjs +99 -81
  740. package/dist/services/server/routing.mjs.map +1 -1
  741. package/dist/services/session-manager.d.ts +160 -0
  742. package/dist/services/session-manager.d.ts.map +1 -0
  743. package/dist/services/session-manager.js +476 -0
  744. package/dist/services/session-manager.js.map +1 -0
  745. package/dist/services/session-manager.mjs +473 -0
  746. package/dist/services/session-manager.mjs.map +1 -0
  747. package/dist/services/utils/conditional-fields.d.ts +3 -0
  748. package/dist/services/utils/conditional-fields.d.ts.map +1 -0
  749. package/dist/services/utils/conditional-fields.js +22 -0
  750. package/dist/services/utils/conditional-fields.js.map +1 -0
  751. package/dist/services/utils/conditional-fields.mjs +20 -0
  752. package/dist/services/utils/conditional-fields.mjs.map +1 -0
  753. package/dist/services/utils/dynamic-zones.js +13 -14
  754. package/dist/services/utils/dynamic-zones.js.map +1 -1
  755. package/dist/services/utils/dynamic-zones.mjs +12 -16
  756. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  757. package/dist/services/webhook-runner.js +124 -122
  758. package/dist/services/webhook-runner.js.map +1 -1
  759. package/dist/services/webhook-runner.mjs +123 -121
  760. package/dist/services/webhook-runner.mjs.map +1 -1
  761. package/dist/services/webhook-store.js +132 -99
  762. package/dist/services/webhook-store.js.map +1 -1
  763. package/dist/services/webhook-store.mjs +131 -101
  764. package/dist/services/webhook-store.mjs.map +1 -1
  765. package/dist/services/worker-queue.js +44 -49
  766. package/dist/services/worker-queue.js.map +1 -1
  767. package/dist/services/worker-queue.mjs +43 -49
  768. package/dist/services/worker-queue.mjs.map +1 -1
  769. package/dist/utils/convert-custom-field-type.js +17 -20
  770. package/dist/utils/convert-custom-field-type.js.map +1 -1
  771. package/dist/utils/convert-custom-field-type.mjs +16 -21
  772. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  773. package/dist/utils/cron.js +64 -30
  774. package/dist/utils/cron.js.map +1 -1
  775. package/dist/utils/cron.mjs +63 -31
  776. package/dist/utils/cron.mjs.map +1 -1
  777. package/dist/utils/fetch.d.ts +5 -1
  778. package/dist/utils/fetch.d.ts.map +1 -1
  779. package/dist/utils/fetch.js +28 -18
  780. package/dist/utils/fetch.js.map +1 -1
  781. package/dist/utils/fetch.mjs +27 -19
  782. package/dist/utils/fetch.mjs.map +1 -1
  783. package/dist/utils/filepath-to-prop-path.js +20 -28
  784. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  785. package/dist/utils/filepath-to-prop-path.mjs +19 -26
  786. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  787. package/dist/utils/is-initialized.js +21 -12
  788. package/dist/utils/is-initialized.js.map +1 -1
  789. package/dist/utils/is-initialized.mjs +20 -13
  790. package/dist/utils/is-initialized.mjs.map +1 -1
  791. package/dist/utils/lifecycles.js +6 -5
  792. package/dist/utils/lifecycles.js.map +1 -1
  793. package/dist/utils/lifecycles.mjs +5 -6
  794. package/dist/utils/lifecycles.mjs.map +1 -1
  795. package/dist/utils/load-config-file.js +40 -38
  796. package/dist/utils/load-config-file.js.map +1 -1
  797. package/dist/utils/load-config-file.mjs +39 -36
  798. package/dist/utils/load-config-file.mjs.map +1 -1
  799. package/dist/utils/load-files.js +40 -35
  800. package/dist/utils/load-files.js.map +1 -1
  801. package/dist/utils/load-files.mjs +39 -32
  802. package/dist/utils/load-files.mjs.map +1 -1
  803. package/dist/utils/open-browser.js +8 -8
  804. package/dist/utils/open-browser.js.map +1 -1
  805. package/dist/utils/open-browser.mjs +7 -7
  806. package/dist/utils/open-browser.mjs.map +1 -1
  807. package/dist/utils/resolve-working-dirs.js +23 -10
  808. package/dist/utils/resolve-working-dirs.js.map +1 -1
  809. package/dist/utils/resolve-working-dirs.mjs +22 -9
  810. package/dist/utils/resolve-working-dirs.mjs.map +1 -1
  811. package/dist/utils/signals.js +20 -14
  812. package/dist/utils/signals.js.map +1 -1
  813. package/dist/utils/signals.mjs +19 -15
  814. package/dist/utils/signals.mjs.map +1 -1
  815. package/dist/utils/startup-logger.d.ts.map +1 -1
  816. package/dist/utils/startup-logger.js +107 -78
  817. package/dist/utils/startup-logger.js.map +1 -1
  818. package/dist/utils/startup-logger.mjs +106 -75
  819. package/dist/utils/startup-logger.mjs.map +1 -1
  820. package/dist/utils/transform-content-types-to-models.d.ts +550 -21
  821. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  822. package/dist/utils/transform-content-types-to-models.js +350 -261
  823. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  824. package/dist/utils/transform-content-types-to-models.mjs +349 -269
  825. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  826. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  827. package/dist/utils/update-notifier/index.js +68 -73
  828. package/dist/utils/update-notifier/index.js.map +1 -1
  829. package/dist/utils/update-notifier/index.mjs +67 -67
  830. package/dist/utils/update-notifier/index.mjs.map +1 -1
  831. package/package.json +33 -29
@@ -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;