@strapi/core 0.0.0-experimental.e60ec1829240dae21c1e1d29076681c322288813 → 0.0.0-experimental.e81b49f196c3dd00856818d61a256a3ff8ec2011

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