@strapi/core 0.0.0-experimental.d362bf200f5f9359a4bbd4a549603de5ee1f04ca → 0.0.0-experimental.d65615a2b9130dd742d3c396674457d7971da928

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (532) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +37 -46
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +190 -225
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +159 -214
  7. package/dist/Strapi.mjs.map +1 -1
  8. package/dist/configuration/config-loader.d.ts.map +1 -1
  9. package/dist/configuration/config-loader.js +9 -5
  10. package/dist/configuration/config-loader.js.map +1 -1
  11. package/dist/configuration/config-loader.mjs +9 -5
  12. package/dist/configuration/config-loader.mjs.map +1 -1
  13. package/dist/configuration/get-dirs.d.ts +10 -0
  14. package/dist/configuration/get-dirs.d.ts.map +1 -0
  15. package/dist/{utils → configuration}/get-dirs.js +3 -2
  16. package/dist/configuration/get-dirs.js.map +1 -0
  17. package/dist/{utils → configuration}/get-dirs.mjs +3 -2
  18. package/dist/configuration/get-dirs.mjs.map +1 -0
  19. package/dist/configuration/index.d.ts +4 -7
  20. package/dist/configuration/index.d.ts.map +1 -1
  21. package/dist/configuration/index.js +8 -6
  22. package/dist/configuration/index.js.map +1 -1
  23. package/dist/configuration/index.mjs +5 -4
  24. package/dist/configuration/index.mjs.map +1 -1
  25. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  26. package/dist/core-api/controller/collection-type.js +6 -3
  27. package/dist/core-api/controller/collection-type.js.map +1 -1
  28. package/dist/core-api/controller/collection-type.mjs +3 -0
  29. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  30. package/dist/core-api/controller/index.js +2 -2
  31. package/dist/core-api/controller/index.js.map +1 -1
  32. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  33. package/dist/core-api/controller/single-type.js +3 -2
  34. package/dist/core-api/controller/single-type.js.map +1 -1
  35. package/dist/core-api/controller/single-type.mjs +1 -0
  36. package/dist/core-api/controller/single-type.mjs.map +1 -1
  37. package/dist/core-api/controller/transform.js +8 -8
  38. package/dist/core-api/controller/transform.js.map +1 -1
  39. package/dist/core-api/routes/index.d.ts.map +1 -1
  40. package/dist/core-api/service/collection-type.d.ts +3 -9
  41. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  42. package/dist/core-api/service/collection-type.js +18 -7
  43. package/dist/core-api/service/collection-type.js.map +1 -1
  44. package/dist/core-api/service/collection-type.mjs +19 -8
  45. package/dist/core-api/service/collection-type.mjs.map +1 -1
  46. package/dist/core-api/service/pagination.d.ts +4 -11
  47. package/dist/core-api/service/pagination.d.ts.map +1 -1
  48. package/dist/core-api/service/pagination.js +18 -44
  49. package/dist/core-api/service/pagination.js.map +1 -1
  50. package/dist/core-api/service/pagination.mjs +16 -42
  51. package/dist/core-api/service/pagination.mjs.map +1 -1
  52. package/dist/core-api/service/single-type.d.ts.map +1 -1
  53. package/dist/core-api/service/single-type.js +9 -2
  54. package/dist/core-api/service/single-type.js.map +1 -1
  55. package/dist/core-api/service/single-type.mjs +9 -2
  56. package/dist/core-api/service/single-type.mjs.map +1 -1
  57. package/dist/domain/content-type/index.js +4 -4
  58. package/dist/domain/content-type/index.js.map +1 -1
  59. package/dist/ee/index.d.ts +2 -0
  60. package/dist/ee/index.d.ts.map +1 -1
  61. package/dist/ee/index.js +3 -3
  62. package/dist/ee/index.js.map +1 -1
  63. package/dist/ee/index.mjs.map +1 -1
  64. package/dist/ee/license.d.ts.map +1 -1
  65. package/dist/ee/license.js +2 -1
  66. package/dist/ee/license.js.map +1 -1
  67. package/dist/ee/license.mjs +2 -1
  68. package/dist/ee/license.mjs.map +1 -1
  69. package/dist/factories.d.ts +2 -2
  70. package/dist/factories.d.ts.map +1 -1
  71. package/dist/factories.js +4 -4
  72. package/dist/factories.js.map +1 -1
  73. package/dist/factories.mjs.map +1 -1
  74. package/dist/index.d.ts +18 -2
  75. package/dist/index.d.ts.map +1 -1
  76. package/dist/index.js +25 -1
  77. package/dist/index.js.map +1 -1
  78. package/dist/index.mjs +27 -3
  79. package/dist/index.mjs.map +1 -1
  80. package/dist/loaders/admin.js +0 -1
  81. package/dist/loaders/admin.js.map +1 -1
  82. package/dist/loaders/admin.mjs +0 -1
  83. package/dist/loaders/admin.mjs.map +1 -1
  84. package/dist/loaders/apis.d.ts.map +1 -1
  85. package/dist/loaders/apis.js +12 -12
  86. package/dist/loaders/apis.js.map +1 -1
  87. package/dist/loaders/apis.mjs +10 -10
  88. package/dist/loaders/apis.mjs.map +1 -1
  89. package/dist/loaders/index.d.ts.map +1 -1
  90. package/dist/loaders/index.js +0 -2
  91. package/dist/loaders/index.js.map +1 -1
  92. package/dist/loaders/index.mjs +0 -2
  93. package/dist/loaders/index.mjs.map +1 -1
  94. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  95. package/dist/loaders/plugins/get-enabled-plugins.js +46 -17
  96. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  97. package/dist/loaders/plugins/get-enabled-plugins.mjs +16 -9
  98. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  99. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  100. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  101. package/dist/loaders/plugins/index.d.ts.map +1 -1
  102. package/dist/loaders/plugins/index.js +34 -7
  103. package/dist/loaders/plugins/index.js.map +1 -1
  104. package/dist/loaders/plugins/index.mjs +9 -1
  105. package/dist/loaders/plugins/index.mjs.map +1 -1
  106. package/dist/middlewares/body.d.ts +2 -2
  107. package/dist/middlewares/body.d.ts.map +1 -1
  108. package/dist/middlewares/body.js +6 -6
  109. package/dist/middlewares/body.js.map +1 -1
  110. package/dist/middlewares/body.mjs +4 -4
  111. package/dist/middlewares/body.mjs.map +1 -1
  112. package/dist/middlewares/cors.d.ts.map +1 -1
  113. package/dist/middlewares/cors.js +9 -7
  114. package/dist/middlewares/cors.js.map +1 -1
  115. package/dist/middlewares/cors.mjs +9 -7
  116. package/dist/middlewares/cors.mjs.map +1 -1
  117. package/dist/middlewares/public.js +3 -3
  118. package/dist/middlewares/public.js.map +1 -1
  119. package/dist/middlewares/public.mjs +1 -1
  120. package/dist/middlewares/public.mjs.map +1 -1
  121. package/dist/middlewares/query.d.ts.map +1 -1
  122. package/dist/middlewares/query.js.map +1 -1
  123. package/dist/middlewares/query.mjs.map +1 -1
  124. package/dist/middlewares/responses.js +2 -2
  125. package/dist/middlewares/responses.js.map +1 -1
  126. package/dist/middlewares/security.d.ts.map +1 -1
  127. package/dist/middlewares/security.js +12 -5
  128. package/dist/middlewares/security.js.map +1 -1
  129. package/dist/middlewares/security.mjs +11 -4
  130. package/dist/middlewares/security.mjs.map +1 -1
  131. package/dist/middlewares/session.js +2 -2
  132. package/dist/middlewares/session.js.map +1 -1
  133. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +33 -0
  134. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  135. package/dist/migrations/database/5.0.0-discard-drafts.js +94 -0
  136. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  137. package/dist/migrations/database/5.0.0-discard-drafts.mjs +94 -0
  138. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  139. package/dist/migrations/draft-publish.d.ts +1 -1
  140. package/dist/migrations/draft-publish.d.ts.map +1 -1
  141. package/dist/migrations/draft-publish.js +14 -31
  142. package/dist/migrations/draft-publish.js.map +1 -1
  143. package/dist/migrations/draft-publish.mjs +15 -32
  144. package/dist/migrations/draft-publish.mjs.map +1 -1
  145. package/dist/migrations/i18n.d.ts +5 -0
  146. package/dist/migrations/i18n.d.ts.map +1 -0
  147. package/dist/migrations/i18n.js +54 -0
  148. package/dist/migrations/i18n.js.map +1 -0
  149. package/dist/migrations/i18n.mjs +54 -0
  150. package/dist/migrations/i18n.mjs.map +1 -0
  151. package/dist/migrations/index.d.ts +5 -0
  152. package/dist/migrations/index.d.ts.map +1 -0
  153. package/dist/migrations/index.js +15 -0
  154. package/dist/migrations/index.js.map +1 -0
  155. package/dist/migrations/index.mjs +15 -0
  156. package/dist/migrations/index.mjs.map +1 -0
  157. package/dist/providers/admin.d.ts +3 -0
  158. package/dist/providers/admin.d.ts.map +1 -0
  159. package/dist/providers/admin.js +20 -0
  160. package/dist/providers/admin.js.map +1 -0
  161. package/dist/providers/admin.mjs +21 -0
  162. package/dist/providers/admin.mjs.map +1 -0
  163. package/dist/providers/coreStore.d.ts +3 -0
  164. package/dist/providers/coreStore.d.ts.map +1 -0
  165. package/dist/providers/coreStore.js +11 -0
  166. package/dist/providers/coreStore.js.map +1 -0
  167. package/dist/providers/coreStore.mjs +12 -0
  168. package/dist/providers/coreStore.mjs.map +1 -0
  169. package/dist/providers/cron.d.ts +3 -0
  170. package/dist/providers/cron.d.ts.map +1 -0
  171. package/dist/providers/cron.js +20 -0
  172. package/dist/providers/cron.js.map +1 -0
  173. package/dist/providers/cron.mjs +21 -0
  174. package/dist/providers/cron.mjs.map +1 -0
  175. package/dist/providers/index.d.ts +3 -0
  176. package/dist/providers/index.d.ts.map +1 -0
  177. package/dist/providers/index.js +11 -0
  178. package/dist/providers/index.js.map +1 -0
  179. package/dist/providers/index.mjs +11 -0
  180. package/dist/providers/index.mjs.map +1 -0
  181. package/dist/providers/provider.d.ts +9 -0
  182. package/dist/providers/provider.d.ts.map +1 -0
  183. package/dist/providers/provider.js +5 -0
  184. package/dist/providers/provider.js.map +1 -0
  185. package/dist/providers/provider.mjs +5 -0
  186. package/dist/providers/provider.mjs.map +1 -0
  187. package/dist/providers/registries.d.ts +3 -0
  188. package/dist/providers/registries.d.ts.map +1 -0
  189. package/dist/providers/registries.js +35 -0
  190. package/dist/providers/registries.js.map +1 -0
  191. package/dist/providers/registries.mjs +36 -0
  192. package/dist/providers/registries.mjs.map +1 -0
  193. package/dist/providers/telemetry.d.ts +3 -0
  194. package/dist/providers/telemetry.d.ts.map +1 -0
  195. package/dist/providers/telemetry.js +19 -0
  196. package/dist/providers/telemetry.js.map +1 -0
  197. package/dist/providers/telemetry.mjs +20 -0
  198. package/dist/providers/telemetry.mjs.map +1 -0
  199. package/dist/providers/webhooks.d.ts +3 -0
  200. package/dist/providers/webhooks.d.ts.map +1 -0
  201. package/dist/providers/webhooks.js +30 -0
  202. package/dist/providers/webhooks.js.map +1 -0
  203. package/dist/providers/webhooks.mjs +31 -0
  204. package/dist/providers/webhooks.mjs.map +1 -0
  205. package/dist/registries/apis.js +2 -2
  206. package/dist/registries/apis.js.map +1 -1
  207. package/dist/registries/components.js +2 -2
  208. package/dist/registries/components.js.map +1 -1
  209. package/dist/registries/content-types.js +3 -3
  210. package/dist/registries/content-types.js.map +1 -1
  211. package/dist/registries/controllers.js +3 -3
  212. package/dist/registries/controllers.js.map +1 -1
  213. package/dist/registries/custom-fields.js +4 -4
  214. package/dist/registries/custom-fields.js.map +1 -1
  215. package/dist/registries/hooks.js +2 -2
  216. package/dist/registries/hooks.js.map +1 -1
  217. package/dist/registries/index.d.ts +0 -1
  218. package/dist/registries/index.d.ts.map +1 -1
  219. package/dist/registries/middlewares.js +3 -3
  220. package/dist/registries/middlewares.js.map +1 -1
  221. package/dist/registries/modules.js +3 -3
  222. package/dist/registries/modules.js.map +1 -1
  223. package/dist/registries/plugins.js +2 -2
  224. package/dist/registries/plugins.js.map +1 -1
  225. package/dist/registries/policies.d.ts +1 -1
  226. package/dist/registries/policies.d.ts.map +1 -1
  227. package/dist/registries/policies.js +5 -5
  228. package/dist/registries/policies.js.map +1 -1
  229. package/dist/registries/policies.mjs +1 -1
  230. package/dist/registries/policies.mjs.map +1 -1
  231. package/dist/registries/services.js +3 -3
  232. package/dist/registries/services.js.map +1 -1
  233. package/dist/services/auth/index.js +3 -3
  234. package/dist/services/auth/index.js.map +1 -1
  235. package/dist/services/config.d.ts +3 -0
  236. package/dist/services/config.d.ts.map +1 -0
  237. package/dist/{registries → services}/config.js +11 -7
  238. package/dist/services/config.js.map +1 -0
  239. package/dist/{registries → services}/config.mjs +10 -7
  240. package/dist/services/config.mjs.map +1 -0
  241. package/dist/services/content-api/index.d.ts +10 -12
  242. package/dist/services/content-api/index.d.ts.map +1 -1
  243. package/dist/services/content-api/index.js +1 -1
  244. package/dist/services/content-api/index.js.map +1 -1
  245. package/dist/services/content-api/index.mjs +1 -1
  246. package/dist/services/content-api/index.mjs.map +1 -1
  247. package/dist/services/content-api/permissions/index.d.ts +10 -12
  248. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  249. package/dist/services/content-api/permissions/index.js +1 -1
  250. package/dist/services/content-api/permissions/index.js.map +1 -1
  251. package/dist/services/content-api/permissions/index.mjs +1 -1
  252. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  253. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  254. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  255. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  256. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  257. package/dist/services/core-store.d.ts.map +1 -1
  258. package/dist/services/core-store.js +3 -3
  259. package/dist/services/core-store.js.map +1 -1
  260. package/dist/services/cron.d.ts +3 -3
  261. package/dist/services/cron.d.ts.map +1 -1
  262. package/dist/services/cron.js +3 -3
  263. package/dist/services/cron.js.map +1 -1
  264. package/dist/services/cron.mjs.map +1 -1
  265. package/dist/services/document-service/attributes/index.d.ts +6 -0
  266. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  267. package/dist/services/{entity-service → document-service}/attributes/index.js +5 -5
  268. package/dist/services/document-service/attributes/index.js.map +1 -0
  269. package/dist/services/{entity-service → document-service}/attributes/index.mjs +5 -5
  270. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  271. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  272. package/dist/services/{entity-service → document-service}/attributes/transforms.js +3 -3
  273. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  274. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  275. package/dist/services/document-service/common.d.ts +1 -1
  276. package/dist/services/document-service/common.d.ts.map +1 -1
  277. package/dist/services/document-service/common.js.map +1 -1
  278. package/dist/services/document-service/common.mjs.map +1 -1
  279. package/dist/services/document-service/components.d.ts +25 -1
  280. package/dist/services/document-service/components.d.ts.map +1 -1
  281. package/dist/services/{entity-service → document-service}/components.js +46 -56
  282. package/dist/services/document-service/components.js.map +1 -0
  283. package/dist/services/{entity-service → document-service}/components.mjs +36 -46
  284. package/dist/services/document-service/components.mjs.map +1 -0
  285. package/dist/services/document-service/draft-and-publish.js +16 -16
  286. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  287. package/dist/services/document-service/entries.d.ts +10 -0
  288. package/dist/services/document-service/entries.d.ts.map +1 -0
  289. package/dist/services/document-service/entries.js +96 -0
  290. package/dist/services/document-service/entries.js.map +1 -0
  291. package/dist/services/document-service/entries.mjs +96 -0
  292. package/dist/services/document-service/entries.mjs.map +1 -0
  293. package/dist/services/document-service/events.d.ts +25 -0
  294. package/dist/services/document-service/events.d.ts.map +1 -0
  295. package/dist/services/document-service/events.js +47 -0
  296. package/dist/services/document-service/events.js.map +1 -0
  297. package/dist/services/document-service/events.mjs +47 -0
  298. package/dist/services/document-service/events.mjs.map +1 -0
  299. package/dist/services/document-service/index.d.ts +0 -2
  300. package/dist/services/document-service/index.d.ts.map +1 -1
  301. package/dist/services/document-service/index.js +13 -2
  302. package/dist/services/document-service/index.js.map +1 -1
  303. package/dist/services/document-service/index.mjs +13 -2
  304. package/dist/services/document-service/index.mjs.map +1 -1
  305. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  306. package/dist/services/document-service/internationalization.js +21 -12
  307. package/dist/services/document-service/internationalization.js.map +1 -1
  308. package/dist/services/document-service/internationalization.mjs +14 -5
  309. package/dist/services/document-service/internationalization.mjs.map +1 -1
  310. package/dist/services/document-service/middlewares/middleware-manager.d.ts +5 -2
  311. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -1
  312. package/dist/services/document-service/middlewares/middleware-manager.js +8 -5
  313. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -1
  314. package/dist/services/document-service/middlewares/middleware-manager.mjs +8 -5
  315. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -1
  316. package/dist/services/document-service/params.d.ts +3 -1
  317. package/dist/services/document-service/params.d.ts.map +1 -1
  318. package/dist/services/{entity-service → document-service}/params.js +2 -2
  319. package/dist/services/document-service/params.js.map +1 -0
  320. package/dist/services/document-service/params.mjs.map +1 -0
  321. package/dist/services/document-service/repository.d.ts.map +1 -1
  322. package/dist/services/document-service/repository.js +177 -160
  323. package/dist/services/document-service/repository.js.map +1 -1
  324. package/dist/services/document-service/repository.mjs +154 -137
  325. package/dist/services/document-service/repository.mjs.map +1 -1
  326. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  327. package/dist/services/document-service/transform/data.js +4 -2
  328. package/dist/services/document-service/transform/data.js.map +1 -1
  329. package/dist/services/document-service/transform/data.mjs +4 -2
  330. package/dist/services/document-service/transform/data.mjs.map +1 -1
  331. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  332. package/dist/services/document-service/transform/id-transform.js +2 -2
  333. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  334. package/dist/services/document-service/transform/query.d.ts +5 -0
  335. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  336. package/dist/services/document-service/transform/query.js +9 -0
  337. package/dist/services/document-service/transform/query.js.map +1 -0
  338. package/dist/services/document-service/transform/query.mjs +9 -0
  339. package/dist/services/document-service/transform/query.mjs.map +1 -0
  340. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  341. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  342. package/dist/services/document-service/transform/relations/extract/data-ids.js +45 -78
  343. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  344. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +44 -77
  345. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  346. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +7 -3
  347. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  348. package/dist/services/document-service/transform/relations/transform/data-ids.js +61 -126
  349. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  350. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +61 -126
  351. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  352. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  353. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  354. package/dist/services/document-service/transform/relations/transform/default-locale.js +32 -0
  355. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  356. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +32 -0
  357. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  358. package/dist/services/document-service/transform/relations/utils/dp.js +2 -2
  359. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  360. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +2 -2
  361. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  362. package/dist/services/document-service/transform/relations/utils/i18n.js +3 -9
  363. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  364. package/dist/services/document-service/transform/relations/utils/i18n.mjs +3 -9
  365. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  366. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  367. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  368. package/dist/services/document-service/transform/relations/utils/map-relation.js +91 -0
  369. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  370. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +91 -0
  371. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  372. package/dist/services/document-service/transform/relations/utils/types.d.ts +6 -0
  373. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  374. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  375. package/dist/services/document-service/utils/populate.js +7 -1
  376. package/dist/services/document-service/utils/populate.js.map +1 -1
  377. package/dist/services/document-service/utils/populate.mjs +7 -1
  378. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  379. package/dist/services/document-service/utils/unidirectional-relations.d.ts +33 -0
  380. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  381. package/dist/services/document-service/utils/unidirectional-relations.js +57 -0
  382. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  383. package/dist/services/document-service/utils/unidirectional-relations.mjs +57 -0
  384. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  385. package/dist/services/entity-service/index.d.ts.map +1 -1
  386. package/dist/services/entity-service/index.js +11 -4
  387. package/dist/services/entity-service/index.js.map +1 -1
  388. package/dist/services/entity-service/index.mjs +11 -4
  389. package/dist/services/entity-service/index.mjs.map +1 -1
  390. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  391. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  392. package/dist/services/entity-validator/blocks-validator.js +4 -3
  393. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  394. package/dist/services/entity-validator/blocks-validator.mjs +3 -3
  395. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  396. package/dist/services/entity-validator/index.d.ts +15 -1
  397. package/dist/services/entity-validator/index.d.ts.map +1 -1
  398. package/dist/services/entity-validator/index.js +189 -127
  399. package/dist/services/entity-validator/index.js.map +1 -1
  400. package/dist/services/entity-validator/index.mjs +184 -122
  401. package/dist/services/entity-validator/index.mjs.map +1 -1
  402. package/dist/services/entity-validator/validators.d.ts +36 -25
  403. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  404. package/dist/services/entity-validator/validators.js +148 -33
  405. package/dist/services/entity-validator/validators.js.map +1 -1
  406. package/dist/services/entity-validator/validators.mjs +140 -25
  407. package/dist/services/entity-validator/validators.mjs.map +1 -1
  408. package/dist/services/event-hub.d.ts +1 -0
  409. package/dist/services/event-hub.d.ts.map +1 -1
  410. package/dist/services/event-hub.js +9 -4
  411. package/dist/services/event-hub.js.map +1 -1
  412. package/dist/services/event-hub.mjs +9 -4
  413. package/dist/services/event-hub.mjs.map +1 -1
  414. package/dist/services/metrics/middleware.d.ts.map +1 -1
  415. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  416. package/dist/services/metrics/rate-limiter.js.map +1 -1
  417. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  418. package/dist/services/reloader.d.ts +7 -0
  419. package/dist/services/reloader.d.ts.map +1 -0
  420. package/dist/services/reloader.js +36 -0
  421. package/dist/services/reloader.js.map +1 -0
  422. package/dist/services/reloader.mjs +36 -0
  423. package/dist/services/reloader.mjs.map +1 -0
  424. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  425. package/dist/services/server/compose-endpoint.js +7 -7
  426. package/dist/services/server/compose-endpoint.js.map +1 -1
  427. package/dist/services/server/index.js +1 -1
  428. package/dist/services/server/index.js.map +1 -1
  429. package/dist/services/server/index.mjs +1 -1
  430. package/dist/services/server/index.mjs.map +1 -1
  431. package/dist/services/server/koa.d.ts.map +1 -1
  432. package/dist/services/server/koa.js +4 -4
  433. package/dist/services/server/koa.js.map +1 -1
  434. package/dist/services/server/koa.mjs +1 -1
  435. package/dist/services/server/koa.mjs.map +1 -1
  436. package/dist/services/server/middleware.js +3 -3
  437. package/dist/services/server/middleware.js.map +1 -1
  438. package/dist/services/server/register-routes.js +3 -3
  439. package/dist/services/server/register-routes.js.map +1 -1
  440. package/dist/services/server/register-routes.mjs +3 -3
  441. package/dist/services/server/register-routes.mjs.map +1 -1
  442. package/dist/services/server/routing.d.ts +1 -1
  443. package/dist/services/server/routing.js +2 -2
  444. package/dist/services/server/routing.js.map +1 -1
  445. package/dist/services/utils/dynamic-zones.js +5 -5
  446. package/dist/services/utils/dynamic-zones.js.map +1 -1
  447. package/dist/services/webhook-runner.d.ts +2 -1
  448. package/dist/services/webhook-runner.d.ts.map +1 -1
  449. package/dist/services/webhook-runner.js.map +1 -1
  450. package/dist/services/webhook-runner.mjs.map +1 -1
  451. package/dist/services/webhook-store.d.ts +2 -8
  452. package/dist/services/webhook-store.d.ts.map +1 -1
  453. package/dist/services/webhook-store.js +14 -8
  454. package/dist/services/webhook-store.js.map +1 -1
  455. package/dist/services/webhook-store.mjs +14 -8
  456. package/dist/services/webhook-store.mjs.map +1 -1
  457. package/dist/utils/cron.js +3 -3
  458. package/dist/utils/cron.js.map +1 -1
  459. package/dist/utils/fetch.d.ts.map +1 -1
  460. package/dist/utils/fetch.js +4 -3
  461. package/dist/utils/fetch.js.map +1 -1
  462. package/dist/utils/fetch.mjs +4 -3
  463. package/dist/utils/fetch.mjs.map +1 -1
  464. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  465. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  466. package/dist/utils/filepath-to-prop-path.js +27 -6
  467. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  468. package/dist/utils/filepath-to-prop-path.mjs +25 -5
  469. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  470. package/dist/utils/index.d.ts +2 -1
  471. package/dist/utils/index.d.ts.map +1 -1
  472. package/dist/utils/is-initialized.js +3 -3
  473. package/dist/utils/is-initialized.js.map +1 -1
  474. package/dist/utils/load-files.d.ts.map +1 -1
  475. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  476. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  477. package/dist/utils/resolve-working-dirs.js +13 -0
  478. package/dist/utils/resolve-working-dirs.js.map +1 -0
  479. package/dist/utils/resolve-working-dirs.mjs +11 -0
  480. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  481. package/dist/utils/startup-logger.d.ts.map +1 -1
  482. package/dist/utils/startup-logger.js +4 -4
  483. package/dist/utils/startup-logger.js.map +1 -1
  484. package/dist/utils/startup-logger.mjs +3 -3
  485. package/dist/utils/startup-logger.mjs.map +1 -1
  486. package/dist/utils/transform-content-types-to-models.d.ts +23 -18
  487. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  488. package/dist/utils/transform-content-types-to-models.js +112 -61
  489. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  490. package/dist/utils/transform-content-types-to-models.mjs +111 -60
  491. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  492. package/dist/utils/update-notifier/index.d.ts +1 -6
  493. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  494. package/dist/utils/update-notifier/index.js +11 -14
  495. package/dist/utils/update-notifier/index.js.map +1 -1
  496. package/dist/utils/update-notifier/index.mjs +11 -14
  497. package/dist/utils/update-notifier/index.mjs.map +1 -1
  498. package/package.json +34 -30
  499. package/dist/registries/config.d.ts +0 -4
  500. package/dist/registries/config.d.ts.map +0 -1
  501. package/dist/registries/config.js.map +0 -1
  502. package/dist/registries/config.mjs.map +0 -1
  503. package/dist/services/document-service/document-engine.d.ts +0 -2
  504. package/dist/services/document-service/document-engine.d.ts.map +0 -1
  505. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -2
  506. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
  507. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  508. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  509. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  510. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  511. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  512. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  513. package/dist/services/entity-service/attributes/index.js.map +0 -1
  514. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  515. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  516. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  517. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  518. package/dist/services/entity-service/components.d.ts +0 -95
  519. package/dist/services/entity-service/components.d.ts.map +0 -1
  520. package/dist/services/entity-service/components.js.map +0 -1
  521. package/dist/services/entity-service/components.mjs.map +0 -1
  522. package/dist/services/entity-service/params.d.ts +0 -8
  523. package/dist/services/entity-service/params.d.ts.map +0 -1
  524. package/dist/services/entity-service/params.js.map +0 -1
  525. package/dist/services/entity-service/params.mjs.map +0 -1
  526. package/dist/utils/get-dirs.d.ts +0 -9
  527. package/dist/utils/get-dirs.d.ts.map +0 -1
  528. package/dist/utils/get-dirs.js.map +0 -1
  529. package/dist/utils/get-dirs.mjs.map +0 -1
  530. /package/dist/services/{entity-service → document-service}/attributes/transforms.d.ts +0 -0
  531. /package/dist/services/{entity-service → document-service}/attributes/transforms.mjs +0 -0
  532. /package/dist/services/{entity-service → document-service}/params.mjs +0 -0
@@ -1,4 +1,3 @@
1
1
  import { yup } from '@strapi/utils';
2
- declare const _default: (metas: any, options: any) => yup.ArraySchema<any, import("yup/lib/types").AnyObject, any[] | undefined, any[] | undefined>;
3
- export default _default;
2
+ export declare const blocksValidator: () => yup.ArraySchema<any, import("yup/lib/types").AnyObject, any[] | undefined, any[] | undefined>;
4
3
  //# sourceMappingURL=blocks-validator.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks-validator.d.ts","sourceRoot":"","sources":["../../../src/services/entity-validator/blocks-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;gCAyKb,GAAG,WAAW,GAAG;AAAxC,wBAA6D"}
1
+ {"version":3,"file":"blocks-validator.d.ts","sourceRoot":"","sources":["../../../src/services/entity-validator/blocks-validator.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,MAAM,eAAe,CAAC;AAwKpC,eAAO,MAAM,eAAe,qGAA8B,CAAC"}
@@ -1,4 +1,5 @@
1
1
  "use strict";
2
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
3
  const strapiUtils = require("@strapi/utils");
3
4
  const textNodeValidator = strapiUtils.yup.object().shape({
4
5
  type: strapiUtils.yup.string().equals(["text"]).required(),
@@ -121,7 +122,7 @@ const blockNodeValidator = strapiUtils.yup.lazy((value) => {
121
122
  });
122
123
  }
123
124
  });
124
- const blocksValidator = strapiUtils.yup.array().of(blockNodeValidator);
125
- const blocksValidator$1 = (metas, options) => blocksValidator;
126
- module.exports = blocksValidator$1;
125
+ const blocksValidatorSchema = strapiUtils.yup.array().of(blockNodeValidator);
126
+ const blocksValidator = () => blocksValidatorSchema;
127
+ exports.blocksValidator = blocksValidator;
127
128
  //# sourceMappingURL=blocks-validator.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks-validator.js","sources":["../../../src/services/entity-validator/blocks-validator.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\n\nconst textNodeValidator = yup.object().shape({\n type: yup.string().equals(['text']).required(),\n text: yup\n .string()\n .test(\n 'is-valid-text',\n 'Text must be defined with at least an empty string',\n (text: unknown) => {\n return typeof text === 'string' || text === '';\n }\n ),\n bold: yup.boolean(),\n italic: yup.boolean(),\n underline: yup.boolean(),\n strikethrough: yup.boolean(),\n code: yup.boolean(),\n});\n\nconst checkValidLink = (link: string) => {\n try {\n // eslint-disable-next-line no-new\n new URL(link.startsWith('/') ? `https://strapi.io${link}` : link);\n } catch (error) {\n return false;\n }\n return true;\n};\n\nconst linkNodeValidator = yup.object().shape({\n type: yup.string().equals(['link']).required(),\n url: yup\n .string()\n .test('invalid-url', 'Please specify a valid link.', (value) => checkValidLink(value ?? '')),\n children: yup.array().of(textNodeValidator).required(),\n});\n\n// TODO: remove any with a correct Type\nconst inlineNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'text':\n return textNodeValidator;\n case 'link':\n return linkNodeValidator;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be Text or Link', () => {\n return false;\n });\n }\n});\n\nconst paragraphNodeValidator = yup.object().shape({\n type: yup.string().equals(['paragraph']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Paragraph node children must have at least one Text or Link node')\n .required(),\n});\n\nconst headingNodeValidator = yup.object().shape({\n type: yup.string().equals(['heading']).required(),\n level: yup.number().oneOf([1, 2, 3, 4, 5, 6]).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Heading node children must have at least one Text or Link node')\n .required(),\n});\n\nconst quoteNodeValidator = yup.object().shape({\n type: yup.string().equals(['quote']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst codeBlockValidator = yup.object().shape({\n type: yup.string().equals(['code']).required(),\n syntax: yup.string().nullable(),\n children: yup\n .array()\n .of(textNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst listItemNode = yup.object().shape({\n type: yup.string().equals(['list-item']).required(),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// Allow children to be either a listItemNode or a listNode itself\n// @ts-expect-error - listChildrenValidator needs a type\nconst listChildrenValidator = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'list':\n return listNodeValidator;\n case 'list-item':\n return listItemNode;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be list-item or list', () => {\n return false;\n });\n }\n});\n\n// @ts-expect-error - listNodeValidator needs a type\nconst listNodeValidator = yup.object().shape({\n type: yup.string().equals(['list']).required(),\n format: yup.string().equals(['ordered', 'unordered']).required(),\n children: yup\n .array()\n .of(listChildrenValidator)\n .min(1, 'List node children must have at least one ListItem or ListNode')\n .required(),\n});\n\nconst imageNodeValidator = yup.object().shape({\n type: yup.string().equals(['image']).required(),\n image: yup.object().shape({\n name: yup.string().required(),\n alternativeText: yup.string().nullable(),\n url: yup.string().required(),\n caption: yup.string().nullable(),\n width: yup.number().required(),\n height: yup.number().required(),\n formats: yup.object().required(),\n hash: yup.string().required(),\n ext: yup.string().required(),\n mime: yup.string().required(),\n size: yup.number().required(),\n previewUrl: yup.string().nullable(),\n provider: yup.string().required(),\n provider_metadata: yup.mixed().nullable(),\n createdAt: yup.string().required(),\n updatedAt: yup.string().required(),\n }),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// TODO: remove the any and replace with a correct Type\nconst blockNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'paragraph':\n return paragraphNodeValidator;\n case 'heading':\n return headingNodeValidator;\n case 'quote':\n return quoteNodeValidator;\n case 'list':\n return listNodeValidator;\n case 'image':\n return imageNodeValidator;\n case 'code':\n return codeBlockValidator;\n default:\n return yup.mixed().test('invalid-type', 'Block node is of invalid type', () => {\n return false;\n });\n }\n});\n\nconst blocksValidator = yup.array().of(blockNodeValidator);\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport default (metas: any, options: any) => blocksValidator;\n"],"names":["yup"],"mappings":"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"}
1
+ {"version":3,"file":"blocks-validator.js","sources":["../../../src/services/entity-validator/blocks-validator.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\n\nconst textNodeValidator = yup.object().shape({\n type: yup.string().equals(['text']).required(),\n text: yup\n .string()\n .test(\n 'is-valid-text',\n 'Text must be defined with at least an empty string',\n (text: unknown) => {\n return typeof text === 'string' || text === '';\n }\n ),\n bold: yup.boolean(),\n italic: yup.boolean(),\n underline: yup.boolean(),\n strikethrough: yup.boolean(),\n code: yup.boolean(),\n});\n\nconst checkValidLink = (link: string) => {\n try {\n // eslint-disable-next-line no-new\n new URL(link.startsWith('/') ? `https://strapi.io${link}` : link);\n } catch (error) {\n return false;\n }\n return true;\n};\n\nconst linkNodeValidator = yup.object().shape({\n type: yup.string().equals(['link']).required(),\n url: yup\n .string()\n .test('invalid-url', 'Please specify a valid link.', (value) => checkValidLink(value ?? '')),\n children: yup.array().of(textNodeValidator).required(),\n});\n\n// TODO: remove any with a correct Type\nconst inlineNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'text':\n return textNodeValidator;\n case 'link':\n return linkNodeValidator;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be Text or Link', () => {\n return false;\n });\n }\n});\n\nconst paragraphNodeValidator = yup.object().shape({\n type: yup.string().equals(['paragraph']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Paragraph node children must have at least one Text or Link node')\n .required(),\n});\n\nconst headingNodeValidator = yup.object().shape({\n type: yup.string().equals(['heading']).required(),\n level: yup.number().oneOf([1, 2, 3, 4, 5, 6]).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Heading node children must have at least one Text or Link node')\n .required(),\n});\n\nconst quoteNodeValidator = yup.object().shape({\n type: yup.string().equals(['quote']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst codeBlockValidator = yup.object().shape({\n type: yup.string().equals(['code']).required(),\n syntax: yup.string().nullable(),\n children: yup\n .array()\n .of(textNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst listItemNode = yup.object().shape({\n type: yup.string().equals(['list-item']).required(),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// Allow children to be either a listItemNode or a listNode itself\n// @ts-expect-error - listChildrenValidator needs a type\nconst listChildrenValidator = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'list':\n return listNodeValidator;\n case 'list-item':\n return listItemNode;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be list-item or list', () => {\n return false;\n });\n }\n});\n\n// @ts-expect-error - listNodeValidator needs a type\nconst listNodeValidator = yup.object().shape({\n type: yup.string().equals(['list']).required(),\n format: yup.string().equals(['ordered', 'unordered']).required(),\n children: yup\n .array()\n .of(listChildrenValidator)\n .min(1, 'List node children must have at least one ListItem or ListNode')\n .required(),\n});\n\nconst imageNodeValidator = yup.object().shape({\n type: yup.string().equals(['image']).required(),\n image: yup.object().shape({\n name: yup.string().required(),\n alternativeText: yup.string().nullable(),\n url: yup.string().required(),\n caption: yup.string().nullable(),\n width: yup.number().required(),\n height: yup.number().required(),\n formats: yup.object().required(),\n hash: yup.string().required(),\n ext: yup.string().required(),\n mime: yup.string().required(),\n size: yup.number().required(),\n previewUrl: yup.string().nullable(),\n provider: yup.string().required(),\n provider_metadata: yup.mixed().nullable(),\n createdAt: yup.string().required(),\n updatedAt: yup.string().required(),\n }),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// TODO: remove the any and replace with a correct Type\nconst blockNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'paragraph':\n return paragraphNodeValidator;\n case 'heading':\n return headingNodeValidator;\n case 'quote':\n return quoteNodeValidator;\n case 'list':\n return listNodeValidator;\n case 'image':\n return imageNodeValidator;\n case 'code':\n return codeBlockValidator;\n default:\n return yup.mixed().test('invalid-type', 'Block node is of invalid type', () => {\n return false;\n });\n }\n});\n\nconst blocksValidatorSchema = yup.array().of(blockNodeValidator);\n\nexport const blocksValidator = () => blocksValidatorSchema;\n"],"names":["yup"],"mappings":"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"}
@@ -120,9 +120,9 @@ const blockNodeValidator = yup.lazy((value) => {
120
120
  });
121
121
  }
122
122
  });
123
- const blocksValidator = yup.array().of(blockNodeValidator);
124
- const blocksValidator$1 = (metas, options) => blocksValidator;
123
+ const blocksValidatorSchema = yup.array().of(blockNodeValidator);
124
+ const blocksValidator = () => blocksValidatorSchema;
125
125
  export {
126
- blocksValidator$1 as default
126
+ blocksValidator
127
127
  };
128
128
  //# sourceMappingURL=blocks-validator.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"blocks-validator.mjs","sources":["../../../src/services/entity-validator/blocks-validator.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\n\nconst textNodeValidator = yup.object().shape({\n type: yup.string().equals(['text']).required(),\n text: yup\n .string()\n .test(\n 'is-valid-text',\n 'Text must be defined with at least an empty string',\n (text: unknown) => {\n return typeof text === 'string' || text === '';\n }\n ),\n bold: yup.boolean(),\n italic: yup.boolean(),\n underline: yup.boolean(),\n strikethrough: yup.boolean(),\n code: yup.boolean(),\n});\n\nconst checkValidLink = (link: string) => {\n try {\n // eslint-disable-next-line no-new\n new URL(link.startsWith('/') ? `https://strapi.io${link}` : link);\n } catch (error) {\n return false;\n }\n return true;\n};\n\nconst linkNodeValidator = yup.object().shape({\n type: yup.string().equals(['link']).required(),\n url: yup\n .string()\n .test('invalid-url', 'Please specify a valid link.', (value) => checkValidLink(value ?? '')),\n children: yup.array().of(textNodeValidator).required(),\n});\n\n// TODO: remove any with a correct Type\nconst inlineNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'text':\n return textNodeValidator;\n case 'link':\n return linkNodeValidator;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be Text or Link', () => {\n return false;\n });\n }\n});\n\nconst paragraphNodeValidator = yup.object().shape({\n type: yup.string().equals(['paragraph']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Paragraph node children must have at least one Text or Link node')\n .required(),\n});\n\nconst headingNodeValidator = yup.object().shape({\n type: yup.string().equals(['heading']).required(),\n level: yup.number().oneOf([1, 2, 3, 4, 5, 6]).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Heading node children must have at least one Text or Link node')\n .required(),\n});\n\nconst quoteNodeValidator = yup.object().shape({\n type: yup.string().equals(['quote']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst codeBlockValidator = yup.object().shape({\n type: yup.string().equals(['code']).required(),\n syntax: yup.string().nullable(),\n children: yup\n .array()\n .of(textNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst listItemNode = yup.object().shape({\n type: yup.string().equals(['list-item']).required(),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// Allow children to be either a listItemNode or a listNode itself\n// @ts-expect-error - listChildrenValidator needs a type\nconst listChildrenValidator = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'list':\n return listNodeValidator;\n case 'list-item':\n return listItemNode;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be list-item or list', () => {\n return false;\n });\n }\n});\n\n// @ts-expect-error - listNodeValidator needs a type\nconst listNodeValidator = yup.object().shape({\n type: yup.string().equals(['list']).required(),\n format: yup.string().equals(['ordered', 'unordered']).required(),\n children: yup\n .array()\n .of(listChildrenValidator)\n .min(1, 'List node children must have at least one ListItem or ListNode')\n .required(),\n});\n\nconst imageNodeValidator = yup.object().shape({\n type: yup.string().equals(['image']).required(),\n image: yup.object().shape({\n name: yup.string().required(),\n alternativeText: yup.string().nullable(),\n url: yup.string().required(),\n caption: yup.string().nullable(),\n width: yup.number().required(),\n height: yup.number().required(),\n formats: yup.object().required(),\n hash: yup.string().required(),\n ext: yup.string().required(),\n mime: yup.string().required(),\n size: yup.number().required(),\n previewUrl: yup.string().nullable(),\n provider: yup.string().required(),\n provider_metadata: yup.mixed().nullable(),\n createdAt: yup.string().required(),\n updatedAt: yup.string().required(),\n }),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// TODO: remove the any and replace with a correct Type\nconst blockNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'paragraph':\n return paragraphNodeValidator;\n case 'heading':\n return headingNodeValidator;\n case 'quote':\n return quoteNodeValidator;\n case 'list':\n return listNodeValidator;\n case 'image':\n return imageNodeValidator;\n case 'code':\n return codeBlockValidator;\n default:\n return yup.mixed().test('invalid-type', 'Block node is of invalid type', () => {\n return false;\n });\n }\n});\n\nconst blocksValidator = yup.array().of(blockNodeValidator);\n\n// eslint-disable-next-line @typescript-eslint/no-unused-vars\nexport default (metas: any, options: any) => blocksValidator;\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"blocks-validator.mjs","sources":["../../../src/services/entity-validator/blocks-validator.ts"],"sourcesContent":["import { yup } from '@strapi/utils';\n\nconst textNodeValidator = yup.object().shape({\n type: yup.string().equals(['text']).required(),\n text: yup\n .string()\n .test(\n 'is-valid-text',\n 'Text must be defined with at least an empty string',\n (text: unknown) => {\n return typeof text === 'string' || text === '';\n }\n ),\n bold: yup.boolean(),\n italic: yup.boolean(),\n underline: yup.boolean(),\n strikethrough: yup.boolean(),\n code: yup.boolean(),\n});\n\nconst checkValidLink = (link: string) => {\n try {\n // eslint-disable-next-line no-new\n new URL(link.startsWith('/') ? `https://strapi.io${link}` : link);\n } catch (error) {\n return false;\n }\n return true;\n};\n\nconst linkNodeValidator = yup.object().shape({\n type: yup.string().equals(['link']).required(),\n url: yup\n .string()\n .test('invalid-url', 'Please specify a valid link.', (value) => checkValidLink(value ?? '')),\n children: yup.array().of(textNodeValidator).required(),\n});\n\n// TODO: remove any with a correct Type\nconst inlineNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'text':\n return textNodeValidator;\n case 'link':\n return linkNodeValidator;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be Text or Link', () => {\n return false;\n });\n }\n});\n\nconst paragraphNodeValidator = yup.object().shape({\n type: yup.string().equals(['paragraph']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Paragraph node children must have at least one Text or Link node')\n .required(),\n});\n\nconst headingNodeValidator = yup.object().shape({\n type: yup.string().equals(['heading']).required(),\n level: yup.number().oneOf([1, 2, 3, 4, 5, 6]).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Heading node children must have at least one Text or Link node')\n .required(),\n});\n\nconst quoteNodeValidator = yup.object().shape({\n type: yup.string().equals(['quote']).required(),\n children: yup\n .array()\n .of(inlineNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst codeBlockValidator = yup.object().shape({\n type: yup.string().equals(['code']).required(),\n syntax: yup.string().nullable(),\n children: yup\n .array()\n .of(textNodeValidator)\n .min(1, 'Quote node children must have at least one Text or Link node')\n .required(),\n});\n\nconst listItemNode = yup.object().shape({\n type: yup.string().equals(['list-item']).required(),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// Allow children to be either a listItemNode or a listNode itself\n// @ts-expect-error - listChildrenValidator needs a type\nconst listChildrenValidator = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'list':\n return listNodeValidator;\n case 'list-item':\n return listItemNode;\n default:\n return yup.mixed().test('invalid-type', 'Inline node must be list-item or list', () => {\n return false;\n });\n }\n});\n\n// @ts-expect-error - listNodeValidator needs a type\nconst listNodeValidator = yup.object().shape({\n type: yup.string().equals(['list']).required(),\n format: yup.string().equals(['ordered', 'unordered']).required(),\n children: yup\n .array()\n .of(listChildrenValidator)\n .min(1, 'List node children must have at least one ListItem or ListNode')\n .required(),\n});\n\nconst imageNodeValidator = yup.object().shape({\n type: yup.string().equals(['image']).required(),\n image: yup.object().shape({\n name: yup.string().required(),\n alternativeText: yup.string().nullable(),\n url: yup.string().required(),\n caption: yup.string().nullable(),\n width: yup.number().required(),\n height: yup.number().required(),\n formats: yup.object().required(),\n hash: yup.string().required(),\n ext: yup.string().required(),\n mime: yup.string().required(),\n size: yup.number().required(),\n previewUrl: yup.string().nullable(),\n provider: yup.string().required(),\n provider_metadata: yup.mixed().nullable(),\n createdAt: yup.string().required(),\n updatedAt: yup.string().required(),\n }),\n children: yup.array().of(inlineNodeValidator).required(),\n});\n\n// TODO: remove the any and replace with a correct Type\nconst blockNodeValidator: any = yup.lazy((value: { type: string }) => {\n switch (value.type) {\n case 'paragraph':\n return paragraphNodeValidator;\n case 'heading':\n return headingNodeValidator;\n case 'quote':\n return quoteNodeValidator;\n case 'list':\n return listNodeValidator;\n case 'image':\n return imageNodeValidator;\n case 'code':\n return codeBlockValidator;\n default:\n return yup.mixed().test('invalid-type', 'Block node is of invalid type', () => {\n return false;\n });\n }\n});\n\nconst blocksValidatorSchema = yup.array().of(blockNodeValidator);\n\nexport const blocksValidator = () => blocksValidatorSchema;\n"],"names":[],"mappings":"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"}
@@ -2,7 +2,21 @@
2
2
  * Entity validator
3
3
  * Module that will validate input data for entity creation or edition
4
4
  */
5
- import { Modules } from '@strapi/types';
5
+ import { Modules, Struct, Schema } from '@strapi/types';
6
+ export type ComponentContext = {
7
+ parentContent: {
8
+ model: Struct.Schema;
9
+ id?: number;
10
+ options?: ValidatorContext;
11
+ };
12
+ pathToComponent: string[];
13
+ repeatableData: Modules.EntityValidator.Entity[];
14
+ fullDynamicZoneContent?: Schema.Attribute.Value<Schema.Attribute.DynamicZone>;
15
+ };
16
+ interface ValidatorContext {
17
+ isDraft?: boolean;
18
+ locale?: string | null;
19
+ }
6
20
  declare const entityValidator: Modules.EntityValidator.EntityValidator;
7
21
  export default entityValidator;
8
22
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/entity-validator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,OAAO,EAAuB,MAAM,eAAe,CAAC;AA6e7D,QAAA,MAAM,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,eAG9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/services/entity-validator/index.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAKH,OAAO,EAAE,OAAO,EAAO,MAAM,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAa7D,MAAM,MAAM,gBAAgB,GAAG;IAC7B,aAAa,EAAE;QAEb,KAAK,EAAE,MAAM,CAAC,MAAM,CAAC;QAErB,EAAE,CAAC,EAAE,MAAM,CAAC;QAGZ,OAAO,CAAC,EAAE,gBAAgB,CAAC;KAC5B,CAAC;IAEF,eAAe,EAAE,MAAM,EAAE,CAAC;IAG1B,cAAc,EAAE,OAAO,CAAC,eAAe,CAAC,MAAM,EAAE,CAAC;IACjD,sBAAsB,CAAC,EAAE,MAAM,CAAC,SAAS,CAAC,KAAK,CAAC,MAAM,CAAC,SAAS,CAAC,WAAW,CAAC,CAAC;CAC/E,CAAC;AAWF,UAAU,gBAAgB;IACxB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CACxB;AAmhBD,QAAA,MAAM,eAAe,EAAE,OAAO,CAAC,eAAe,CAAC,eAG9C,CAAC;AAEF,eAAe,eAAe,CAAC"}
@@ -1,6 +1,6 @@
1
1
  "use strict";
2
- const _$1 = require("lodash");
3
- const _ = require("lodash/fp");
2
+ const _ = require("lodash");
3
+ const fp = require("lodash/fp");
4
4
  const strapiUtils = require("@strapi/utils");
5
5
  const validators = require("./validators.js");
6
6
  const _interopDefault = (e) => e && e.__esModule ? e : { default: e };
@@ -55,7 +55,11 @@ const addDefault = (createOrUpdate) => {
55
55
  };
56
56
  };
57
57
  const preventCast = (validator) => validator.transform((val, originalVal) => originalVal);
58
- const createComponentValidator = (createOrUpdate) => ({ attr, updatedAttribute }, { isDraft }) => {
58
+ const createComponentValidator = (createOrUpdate) => ({
59
+ attr,
60
+ updatedAttribute,
61
+ componentContext
62
+ }, { isDraft }) => {
59
63
  const model = strapi.getModel(attr.component);
60
64
  if (!model) {
61
65
  throw new Error("Validation failed: Model not found");
@@ -63,18 +67,27 @@ const createComponentValidator = (createOrUpdate) => ({ attr, updatedAttribute }
63
67
  if (attr?.repeatable) {
64
68
  let validator2 = yup.array().of(
65
69
  yup.lazy(
66
- (item) => createModelValidator(createOrUpdate)({ model, data: item }, { isDraft }).notNull()
70
+ (item) => createModelValidator(createOrUpdate)(
71
+ { componentContext, model, data: item },
72
+ { isDraft }
73
+ ).notNull()
67
74
  )
68
75
  );
69
76
  validator2 = addRequiredValidation(createOrUpdate)(validator2, {
70
77
  attr: { required: true },
71
78
  updatedAttribute
72
79
  });
73
- validator2 = addMinMax(validator2, { attr, updatedAttribute });
80
+ if (!isDraft) {
81
+ validator2 = addMinMax(validator2, { attr, updatedAttribute });
82
+ }
74
83
  return validator2;
75
84
  }
76
85
  let validator = createModelValidator(createOrUpdate)(
77
- { model, data: updatedAttribute.value },
86
+ {
87
+ model,
88
+ data: updatedAttribute.value,
89
+ componentContext
90
+ },
78
91
  { isDraft }
79
92
  );
80
93
  validator = addRequiredValidation(createOrUpdate)(validator, {
@@ -83,15 +96,20 @@ const createComponentValidator = (createOrUpdate) => ({ attr, updatedAttribute }
83
96
  });
84
97
  return validator;
85
98
  };
86
- const createDzValidator = (createOrUpdate) => ({ attr, updatedAttribute }, { isDraft }) => {
99
+ const createDzValidator = (createOrUpdate) => ({ attr, updatedAttribute, componentContext }, { isDraft }) => {
87
100
  let validator;
88
101
  validator = yup.array().of(
89
102
  yup.lazy((item) => {
90
- const model = strapi.getModel(_.prop("__component", item));
103
+ const model = strapi.getModel(fp.prop("__component", item));
91
104
  const schema = yup.object().shape({
92
105
  __component: yup.string().required().oneOf(Object.keys(strapi.components))
93
106
  }).notNull();
94
- return model ? schema.concat(createModelValidator(createOrUpdate)({ model, data: item }, { isDraft })) : schema;
107
+ return model ? schema.concat(
108
+ createModelValidator(createOrUpdate)(
109
+ { model, data: item, componentContext },
110
+ { isDraft }
111
+ )
112
+ ) : schema;
95
113
  })
96
114
  // FIXME: yup v1
97
115
  );
@@ -99,26 +117,26 @@ const createDzValidator = (createOrUpdate) => ({ attr, updatedAttribute }, { isD
99
117
  attr: { required: true },
100
118
  updatedAttribute
101
119
  });
102
- validator = addMinMax(validator, { attr, updatedAttribute });
120
+ if (!isDraft) {
121
+ validator = addMinMax(validator, { attr, updatedAttribute });
122
+ }
103
123
  return validator;
104
124
  };
105
- const createRelationValidator = (createOrUpdate) => ({ attr, updatedAttribute }, { isDraft }) => {
125
+ const createRelationValidator = ({
126
+ updatedAttribute
127
+ }) => {
106
128
  let validator;
107
129
  if (Array.isArray(updatedAttribute.value)) {
108
130
  validator = yup.array().of(yup.mixed());
109
131
  } else {
110
132
  validator = yup.mixed();
111
133
  }
112
- validator = addRequiredValidation(createOrUpdate)(validator, {
113
- attr: { required: !isDraft && attr.required },
114
- updatedAttribute
115
- });
116
134
  return validator;
117
135
  };
118
136
  const createScalarAttributeValidator = (createOrUpdate) => (metas, options) => {
119
137
  let validator;
120
- if (_.has(metas.attr.type, validators)) {
121
- validator = validators[metas.attr.type](metas, options);
138
+ if (fp.has(metas.attr.type, validators.Validators)) {
139
+ validator = validators.Validators[metas.attr.type](metas, options);
122
140
  } else {
123
141
  validator = yup.mixed();
124
142
  }
@@ -135,67 +153,108 @@ const createAttributeValidator = (createOrUpdate) => (metas, options) => {
135
153
  } else if (isScalarAttribute(metas.attr)) {
136
154
  validator = createScalarAttributeValidator(createOrUpdate)(metas, options);
137
155
  } else {
138
- if (metas.attr.type === "component") {
156
+ if (metas.attr.type === "component" && metas.componentContext) {
157
+ const pathToComponent = [
158
+ ...metas?.componentContext?.pathToComponent ?? [],
159
+ metas.updatedAttribute.name
160
+ ];
161
+ const repeatableData = metas.attr.repeatable && pathToComponent.length === 1 ? metas.updatedAttribute.value : metas.componentContext?.repeatableData;
162
+ const newComponentContext = {
163
+ ...metas.componentContext,
164
+ pathToComponent,
165
+ repeatableData
166
+ };
139
167
  validator = createComponentValidator(createOrUpdate)(
140
- { attr: metas.attr, updatedAttribute: metas.updatedAttribute },
141
- options
142
- );
143
- } else if (metas.attr.type === "dynamiczone") {
144
- validator = createDzValidator(createOrUpdate)(metas, options);
145
- } else if (metas.attr.type === "relation") {
146
- validator = createRelationValidator(createOrUpdate)(
147
168
  {
169
+ componentContext: newComponentContext,
148
170
  attr: metas.attr,
149
171
  updatedAttribute: metas.updatedAttribute
150
172
  },
151
173
  options
152
174
  );
175
+ } else if (metas.attr.type === "dynamiczone" && metas.componentContext) {
176
+ const newComponentContext = {
177
+ ...metas.componentContext,
178
+ fullDynamicZoneContent: metas.updatedAttribute.value,
179
+ pathToComponent: [...metas.componentContext.pathToComponent, metas.updatedAttribute.name]
180
+ };
181
+ Object.assign(metas, { componentContext: newComponentContext });
182
+ validator = createDzValidator(createOrUpdate)(metas, options);
183
+ } else if (metas.attr.type === "relation") {
184
+ validator = createRelationValidator({
185
+ attr: metas.attr,
186
+ updatedAttribute: metas.updatedAttribute
187
+ });
153
188
  }
154
189
  validator = preventCast(validator);
155
190
  }
156
191
  validator = addDefault(createOrUpdate)(validator, metas);
157
192
  return validator;
158
193
  };
159
- const createModelValidator = (createOrUpdate) => ({ model, data, entity }, options) => {
194
+ const createModelValidator = (createOrUpdate) => ({ componentContext, model, data, entity }, options) => {
160
195
  const writableAttributes = model ? getWritableAttributes(model) : [];
161
- const schema = writableAttributes.reduce((validators2, attributeName) => {
162
- const metas = {
163
- attr: model.attributes[attributeName],
164
- updatedAttribute: { name: attributeName, value: _.prop(attributeName, data) },
165
- model,
166
- entity
167
- };
168
- const validator = createAttributeValidator(createOrUpdate)(metas, options);
169
- validators2[attributeName] = validator;
170
- return validators2;
171
- }, {});
196
+ const schema = writableAttributes.reduce(
197
+ (validators2, attributeName) => {
198
+ const metas = {
199
+ attr: model.attributes[attributeName],
200
+ updatedAttribute: { name: attributeName, value: fp.prop(attributeName, data) },
201
+ model,
202
+ entity,
203
+ componentContext
204
+ };
205
+ const validator = createAttributeValidator(createOrUpdate)(metas, options);
206
+ validators2[attributeName] = validator;
207
+ return validators2;
208
+ },
209
+ {}
210
+ );
172
211
  return yup.object().shape(schema);
173
212
  };
174
213
  const createValidateEntity = (createOrUpdate) => {
175
214
  return async (model, data, options, entity) => {
176
- if (!_.isObject(data)) {
215
+ if (!fp.isObject(data)) {
177
216
  const { displayName } = model.info;
178
217
  throw new ValidationError(
179
218
  `Invalid payload submitted for the ${createOrUpdate} of an entity of type ${displayName}. Expected an object, but got ${typeof data}`
180
219
  );
181
220
  }
182
221
  const validator = createModelValidator(createOrUpdate)(
183
- { model, data, entity },
222
+ {
223
+ model,
224
+ data,
225
+ entity,
226
+ componentContext: {
227
+ // Set up the initial component context.
228
+ // Keeping track of parent content type context in which a component will be used.
229
+ // This is necessary to validate component field constraints such as uniqueness.
230
+ parentContent: {
231
+ id: entity?.id,
232
+ model,
233
+ options
234
+ },
235
+ pathToComponent: [],
236
+ repeatableData: []
237
+ }
238
+ },
184
239
  {
185
240
  isDraft: options?.isDraft ?? false,
186
241
  locale: options?.locale ?? null
187
242
  }
188
- ).test("relations-test", "check that all relations exist", async function(data2) {
189
- try {
190
- await checkRelationsExist(buildRelationsStore({ uid: model.uid, data: data2 }));
191
- } catch (e) {
192
- return this.createError({
193
- path: this.path,
194
- message: e instanceof ValidationError && e.message || "Invalid relations"
195
- });
243
+ ).test(
244
+ "relations-test",
245
+ "check that all relations exist",
246
+ async function relationsValidation(data2) {
247
+ try {
248
+ await checkRelationsExist(buildRelationsStore({ uid: model.uid, data: data2 }));
249
+ } catch (e) {
250
+ return this.createError({
251
+ path: this.path,
252
+ message: e instanceof ValidationError && e.message || "Invalid relations"
253
+ });
254
+ }
255
+ return true;
196
256
  }
197
- return true;
198
- }).required();
257
+ ).required();
199
258
  return validateYupSchema(validator, {
200
259
  strict: false,
201
260
  abortEarly: false
@@ -209,99 +268,102 @@ const buildRelationsStore = ({
209
268
  if (!uid) {
210
269
  throw new ValidationError(`Cannot build relations store: "uid" is undefined`);
211
270
  }
212
- if (_.isEmpty(data)) {
271
+ if (fp.isEmpty(data)) {
213
272
  return {};
214
273
  }
215
274
  const currentModel = strapi.getModel(uid);
216
- return Object.keys(currentModel.attributes).reduce((result, attributeName) => {
217
- const attribute = currentModel.attributes[attributeName];
218
- const value = data[attributeName];
219
- if (_$1.isNil(value)) {
220
- return result;
221
- }
222
- switch (attribute.type) {
223
- case "relation":
224
- case "media": {
225
- if (attribute.type === "relation" && (attribute.relation === "morphToMany" || attribute.relation === "morphToOne")) {
226
- break;
227
- }
228
- const target = (
229
- // eslint-disable-next-line no-nested-ternary
230
- attribute.type === "media" ? "plugin::upload.file" : attribute.target
231
- );
232
- let source;
233
- if (Array.isArray(value)) {
234
- source = value;
235
- } else if (_.isObject(value)) {
236
- if ("connect" in value && !_$1.isNil(value.connect)) {
237
- source = value.connect;
238
- } else if ("set" in value && !_$1.isNil(value.set)) {
239
- source = value.set;
240
- } else {
241
- source = [];
242
- }
243
- } else {
244
- source = _$1.castArray(value);
245
- }
246
- const idArray = source.map((v) => ({
247
- id: typeof v === "object" ? v.id : v
248
- }));
249
- result[target] = result[target] || [];
250
- result[target].push(...idArray);
251
- break;
275
+ return Object.keys(currentModel.attributes).reduce(
276
+ (result, attributeName) => {
277
+ const attribute = currentModel.attributes[attributeName];
278
+ const value = data[attributeName];
279
+ if (_.isNil(value)) {
280
+ return result;
252
281
  }
253
- case "component": {
254
- return _$1.castArray(value).reduce((relationsStore, componentValue) => {
255
- if (!attribute.component) {
256
- throw new ValidationError(
257
- `Cannot build relations store from component, component identifier is undefined`
258
- );
282
+ switch (attribute.type) {
283
+ case "relation":
284
+ case "media": {
285
+ if (attribute.type === "relation" && (attribute.relation === "morphToMany" || attribute.relation === "morphToOne")) {
286
+ break;
259
287
  }
260
- return _$1.mergeWith(
261
- relationsStore,
262
- buildRelationsStore({
263
- uid: attribute.component,
264
- data: componentValue
265
- }),
266
- (objValue, srcValue) => {
267
- if (_$1.isArray(objValue)) {
268
- return objValue.concat(srcValue);
269
- }
270
- }
288
+ const target = (
289
+ // eslint-disable-next-line no-nested-ternary
290
+ attribute.type === "media" ? "plugin::upload.file" : attribute.target
271
291
  );
272
- }, result);
273
- }
274
- case "dynamiczone": {
275
- return _$1.castArray(value).reduce((relationsStore, dzValue) => {
276
- const value2 = dzValue;
277
- if (!value2.__component) {
278
- throw new ValidationError(
279
- `Cannot build relations store from dynamiczone, component identifier is undefined`
280
- );
292
+ let source;
293
+ if (Array.isArray(value)) {
294
+ source = value;
295
+ } else if (fp.isObject(value)) {
296
+ if ("connect" in value && !_.isNil(value.connect)) {
297
+ source = value.connect;
298
+ } else if ("set" in value && !_.isNil(value.set)) {
299
+ source = value.set;
300
+ } else {
301
+ source = [];
302
+ }
303
+ } else {
304
+ source = _.castArray(value);
281
305
  }
282
- return _$1.mergeWith(
283
- relationsStore,
284
- buildRelationsStore({
285
- uid: value2.__component,
286
- data: value2
287
- }),
288
- (objValue, srcValue) => {
289
- if (_$1.isArray(objValue)) {
290
- return objValue.concat(srcValue);
306
+ const idArray = source.map((v) => ({
307
+ id: typeof v === "object" ? v.id : v
308
+ }));
309
+ result[target] = result[target] || [];
310
+ result[target].push(...idArray);
311
+ break;
312
+ }
313
+ case "component": {
314
+ return _.castArray(value).reduce((relationsStore, componentValue) => {
315
+ if (!attribute.component) {
316
+ throw new ValidationError(
317
+ `Cannot build relations store from component, component identifier is undefined`
318
+ );
319
+ }
320
+ return _.mergeWith(
321
+ relationsStore,
322
+ buildRelationsStore({
323
+ uid: attribute.component,
324
+ data: componentValue
325
+ }),
326
+ (objValue, srcValue) => {
327
+ if (_.isArray(objValue)) {
328
+ return objValue.concat(srcValue);
329
+ }
291
330
  }
331
+ );
332
+ }, result);
333
+ }
334
+ case "dynamiczone": {
335
+ return _.castArray(value).reduce((relationsStore, dzValue) => {
336
+ const value2 = dzValue;
337
+ if (!value2.__component) {
338
+ throw new ValidationError(
339
+ `Cannot build relations store from dynamiczone, component identifier is undefined`
340
+ );
292
341
  }
293
- );
294
- }, result);
342
+ return _.mergeWith(
343
+ relationsStore,
344
+ buildRelationsStore({
345
+ uid: value2.__component,
346
+ data: value2
347
+ }),
348
+ (objValue, srcValue) => {
349
+ if (_.isArray(objValue)) {
350
+ return objValue.concat(srcValue);
351
+ }
352
+ }
353
+ );
354
+ }, result);
355
+ }
295
356
  }
296
- }
297
- return result;
298
- }, {});
357
+ return result;
358
+ },
359
+ {}
360
+ );
299
361
  };
300
362
  const checkRelationsExist = async (relationsStore = {}) => {
301
363
  const promises = [];
302
364
  for (const [key, value] of Object.entries(relationsStore)) {
303
365
  const evaluate = async () => {
304
- const uniqueValues = _$1.uniqBy(value, `id`);
366
+ const uniqueValues = _.uniqBy(value, `id`);
305
367
  const count = await strapi.db.query(key).count({
306
368
  where: {
307
369
  id: {