@strapi/core 0.0.0-experimental.fc1ac2acd58c8a5a858679956b6d102ac5ee4011 → 0.0.0-next.ce84fada19d58a7dfbdd553035e6558f8befcba4

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 (809) hide show
  1. package/LICENSE +18 -3
  2. package/dist/Strapi.d.ts +52 -59
  3. package/dist/Strapi.d.ts.map +1 -1
  4. package/dist/Strapi.js +195 -214
  5. package/dist/Strapi.js.map +1 -1
  6. package/dist/Strapi.mjs +165 -204
  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/container.d.ts +2 -2
  26. package/dist/container.d.ts.map +1 -1
  27. package/dist/container.js.map +1 -1
  28. package/dist/container.mjs.map +1 -1
  29. package/dist/core-api/controller/collection-type.d.ts +3 -3
  30. package/dist/core-api/controller/collection-type.d.ts.map +1 -1
  31. package/dist/core-api/controller/collection-type.js +6 -3
  32. package/dist/core-api/controller/collection-type.js.map +1 -1
  33. package/dist/core-api/controller/collection-type.mjs +3 -0
  34. package/dist/core-api/controller/collection-type.mjs.map +1 -1
  35. package/dist/core-api/controller/index.d.ts +3 -3
  36. package/dist/core-api/controller/index.d.ts.map +1 -1
  37. package/dist/core-api/controller/index.js +7 -7
  38. package/dist/core-api/controller/index.js.map +1 -1
  39. package/dist/core-api/controller/index.mjs +6 -6
  40. package/dist/core-api/controller/index.mjs.map +1 -1
  41. package/dist/core-api/controller/single-type.d.ts +3 -3
  42. package/dist/core-api/controller/single-type.d.ts.map +1 -1
  43. package/dist/core-api/controller/single-type.js +3 -2
  44. package/dist/core-api/controller/single-type.js.map +1 -1
  45. package/dist/core-api/controller/single-type.mjs +1 -0
  46. package/dist/core-api/controller/single-type.mjs.map +1 -1
  47. package/dist/core-api/controller/transform.d.ts +2 -2
  48. package/dist/core-api/controller/transform.d.ts.map +1 -1
  49. package/dist/core-api/controller/transform.js +10 -13
  50. package/dist/core-api/controller/transform.js.map +1 -1
  51. package/dist/core-api/controller/transform.mjs +2 -5
  52. package/dist/core-api/controller/transform.mjs.map +1 -1
  53. package/dist/core-api/routes/index.d.ts.map +1 -1
  54. package/dist/core-api/service/collection-type.d.ts +11 -17
  55. package/dist/core-api/service/collection-type.d.ts.map +1 -1
  56. package/dist/core-api/service/collection-type.js +18 -7
  57. package/dist/core-api/service/collection-type.js.map +1 -1
  58. package/dist/core-api/service/collection-type.mjs +19 -8
  59. package/dist/core-api/service/collection-type.mjs.map +1 -1
  60. package/dist/core-api/service/index.d.ts +3 -3
  61. package/dist/core-api/service/index.d.ts.map +1 -1
  62. package/dist/core-api/service/index.js.map +1 -1
  63. package/dist/core-api/service/index.mjs.map +1 -1
  64. package/dist/core-api/service/pagination.d.ts +4 -11
  65. package/dist/core-api/service/pagination.d.ts.map +1 -1
  66. package/dist/core-api/service/pagination.js +18 -44
  67. package/dist/core-api/service/pagination.js.map +1 -1
  68. package/dist/core-api/service/pagination.mjs +16 -42
  69. package/dist/core-api/service/pagination.mjs.map +1 -1
  70. package/dist/core-api/service/single-type.d.ts +4 -4
  71. package/dist/core-api/service/single-type.d.ts.map +1 -1
  72. package/dist/core-api/service/single-type.js +9 -2
  73. package/dist/core-api/service/single-type.js.map +1 -1
  74. package/dist/core-api/service/single-type.mjs +9 -2
  75. package/dist/core-api/service/single-type.mjs.map +1 -1
  76. package/dist/domain/content-type/index.d.ts +1 -1
  77. package/dist/domain/content-type/index.d.ts.map +1 -1
  78. package/dist/domain/content-type/index.js +4 -4
  79. package/dist/domain/content-type/index.js.map +1 -1
  80. package/dist/domain/module/index.d.ts +24 -23
  81. package/dist/domain/module/index.d.ts.map +1 -1
  82. package/dist/domain/module/index.js +2 -1
  83. package/dist/domain/module/index.js.map +1 -1
  84. package/dist/domain/module/index.mjs +3 -2
  85. package/dist/domain/module/index.mjs.map +1 -1
  86. package/dist/ee/index.d.ts +4 -2
  87. package/dist/ee/index.d.ts.map +1 -1
  88. package/dist/ee/index.js +3 -3
  89. package/dist/ee/index.js.map +1 -1
  90. package/dist/ee/index.mjs.map +1 -1
  91. package/dist/ee/license.d.ts +2 -2
  92. package/dist/ee/license.d.ts.map +1 -1
  93. package/dist/ee/license.js +2 -1
  94. package/dist/ee/license.js.map +1 -1
  95. package/dist/ee/license.mjs +2 -1
  96. package/dist/ee/license.mjs.map +1 -1
  97. package/dist/factories.d.ts +10 -10
  98. package/dist/factories.d.ts.map +1 -1
  99. package/dist/factories.js +10 -6
  100. package/dist/factories.js.map +1 -1
  101. package/dist/factories.mjs +6 -2
  102. package/dist/factories.mjs.map +1 -1
  103. package/dist/index.d.ts +18 -2
  104. package/dist/index.d.ts.map +1 -1
  105. package/dist/index.js +25 -1
  106. package/dist/index.js.map +1 -1
  107. package/dist/index.mjs +27 -3
  108. package/dist/index.mjs.map +1 -1
  109. package/dist/loaders/admin.d.ts +2 -2
  110. package/dist/loaders/admin.d.ts.map +1 -1
  111. package/dist/loaders/admin.js +0 -1
  112. package/dist/loaders/admin.js.map +1 -1
  113. package/dist/loaders/admin.mjs +0 -1
  114. package/dist/loaders/admin.mjs.map +1 -1
  115. package/dist/loaders/apis.d.ts +2 -2
  116. package/dist/loaders/apis.d.ts.map +1 -1
  117. package/dist/loaders/apis.js +12 -12
  118. package/dist/loaders/apis.js.map +1 -1
  119. package/dist/loaders/apis.mjs +10 -10
  120. package/dist/loaders/apis.mjs.map +1 -1
  121. package/dist/loaders/components.d.ts +2 -2
  122. package/dist/loaders/components.d.ts.map +1 -1
  123. package/dist/loaders/components.js.map +1 -1
  124. package/dist/loaders/components.mjs.map +1 -1
  125. package/dist/loaders/index.d.ts +2 -2
  126. package/dist/loaders/index.d.ts.map +1 -1
  127. package/dist/loaders/index.js +0 -2
  128. package/dist/loaders/index.js.map +1 -1
  129. package/dist/loaders/index.mjs +0 -2
  130. package/dist/loaders/index.mjs.map +1 -1
  131. package/dist/loaders/middlewares.d.ts +2 -2
  132. package/dist/loaders/middlewares.d.ts.map +1 -1
  133. package/dist/loaders/middlewares.js.map +1 -1
  134. package/dist/loaders/middlewares.mjs.map +1 -1
  135. package/dist/loaders/plugins/get-enabled-plugins.d.ts +2 -2
  136. package/dist/loaders/plugins/get-enabled-plugins.d.ts.map +1 -1
  137. package/dist/loaders/plugins/get-enabled-plugins.js +46 -16
  138. package/dist/loaders/plugins/get-enabled-plugins.js.map +1 -1
  139. package/dist/loaders/plugins/get-enabled-plugins.mjs +16 -8
  140. package/dist/loaders/plugins/get-enabled-plugins.mjs.map +1 -1
  141. package/dist/loaders/plugins/get-user-plugins-config.js +2 -2
  142. package/dist/loaders/plugins/get-user-plugins-config.js.map +1 -1
  143. package/dist/loaders/plugins/index.d.ts +2 -2
  144. package/dist/loaders/plugins/index.d.ts.map +1 -1
  145. package/dist/loaders/plugins/index.js +34 -7
  146. package/dist/loaders/plugins/index.js.map +1 -1
  147. package/dist/loaders/plugins/index.mjs +9 -1
  148. package/dist/loaders/plugins/index.mjs.map +1 -1
  149. package/dist/loaders/policies.d.ts +2 -2
  150. package/dist/loaders/policies.d.ts.map +1 -1
  151. package/dist/loaders/policies.js.map +1 -1
  152. package/dist/loaders/policies.mjs.map +1 -1
  153. package/dist/loaders/sanitizers.d.ts +2 -2
  154. package/dist/loaders/sanitizers.d.ts.map +1 -1
  155. package/dist/loaders/sanitizers.js.map +1 -1
  156. package/dist/loaders/sanitizers.mjs.map +1 -1
  157. package/dist/loaders/src-index.d.ts +2 -2
  158. package/dist/loaders/src-index.d.ts.map +1 -1
  159. package/dist/loaders/src-index.js.map +1 -1
  160. package/dist/loaders/src-index.mjs.map +1 -1
  161. package/dist/loaders/validators.d.ts +2 -2
  162. package/dist/loaders/validators.d.ts.map +1 -1
  163. package/dist/loaders/validators.js.map +1 -1
  164. package/dist/loaders/validators.mjs.map +1 -1
  165. package/dist/middlewares/body.d.ts +4 -4
  166. package/dist/middlewares/body.d.ts.map +1 -1
  167. package/dist/middlewares/body.js +6 -6
  168. package/dist/middlewares/body.js.map +1 -1
  169. package/dist/middlewares/body.mjs +4 -4
  170. package/dist/middlewares/body.mjs.map +1 -1
  171. package/dist/middlewares/compression.d.ts +2 -2
  172. package/dist/middlewares/compression.d.ts.map +1 -1
  173. package/dist/middlewares/compression.js.map +1 -1
  174. package/dist/middlewares/compression.mjs.map +1 -1
  175. package/dist/middlewares/cors.d.ts +2 -2
  176. package/dist/middlewares/cors.d.ts.map +1 -1
  177. package/dist/middlewares/cors.js +9 -7
  178. package/dist/middlewares/cors.js.map +1 -1
  179. package/dist/middlewares/cors.mjs +9 -7
  180. package/dist/middlewares/cors.mjs.map +1 -1
  181. package/dist/middlewares/errors.d.ts +2 -2
  182. package/dist/middlewares/errors.d.ts.map +1 -1
  183. package/dist/middlewares/errors.js.map +1 -1
  184. package/dist/middlewares/errors.mjs.map +1 -1
  185. package/dist/middlewares/favicon.d.ts +2 -2
  186. package/dist/middlewares/favicon.d.ts.map +1 -1
  187. package/dist/middlewares/favicon.js.map +1 -1
  188. package/dist/middlewares/favicon.mjs.map +1 -1
  189. package/dist/middlewares/index.d.ts +2 -2
  190. package/dist/middlewares/index.d.ts.map +1 -1
  191. package/dist/middlewares/index.js.map +1 -1
  192. package/dist/middlewares/index.mjs.map +1 -1
  193. package/dist/middlewares/ip.d.ts +2 -2
  194. package/dist/middlewares/ip.d.ts.map +1 -1
  195. package/dist/middlewares/ip.js.map +1 -1
  196. package/dist/middlewares/ip.mjs.map +1 -1
  197. package/dist/middlewares/logger.d.ts +2 -2
  198. package/dist/middlewares/logger.d.ts.map +1 -1
  199. package/dist/middlewares/logger.js.map +1 -1
  200. package/dist/middlewares/logger.mjs.map +1 -1
  201. package/dist/middlewares/powered-by.d.ts +2 -2
  202. package/dist/middlewares/powered-by.d.ts.map +1 -1
  203. package/dist/middlewares/powered-by.js.map +1 -1
  204. package/dist/middlewares/powered-by.mjs.map +1 -1
  205. package/dist/middlewares/public.d.ts +2 -2
  206. package/dist/middlewares/public.d.ts.map +1 -1
  207. package/dist/middlewares/public.js +3 -3
  208. package/dist/middlewares/public.js.map +1 -1
  209. package/dist/middlewares/public.mjs +1 -1
  210. package/dist/middlewares/public.mjs.map +1 -1
  211. package/dist/middlewares/query.d.ts +2 -2
  212. package/dist/middlewares/query.d.ts.map +1 -1
  213. package/dist/middlewares/query.js.map +1 -1
  214. package/dist/middlewares/query.mjs.map +1 -1
  215. package/dist/middlewares/response-time.d.ts +2 -2
  216. package/dist/middlewares/response-time.d.ts.map +1 -1
  217. package/dist/middlewares/response-time.js.map +1 -1
  218. package/dist/middlewares/response-time.mjs.map +1 -1
  219. package/dist/middlewares/responses.d.ts +3 -3
  220. package/dist/middlewares/responses.d.ts.map +1 -1
  221. package/dist/middlewares/responses.js +2 -2
  222. package/dist/middlewares/responses.js.map +1 -1
  223. package/dist/middlewares/responses.mjs.map +1 -1
  224. package/dist/middlewares/security.d.ts +2 -2
  225. package/dist/middlewares/security.d.ts.map +1 -1
  226. package/dist/middlewares/security.js +13 -6
  227. package/dist/middlewares/security.js.map +1 -1
  228. package/dist/middlewares/security.mjs +12 -5
  229. package/dist/middlewares/security.mjs.map +1 -1
  230. package/dist/middlewares/session.d.ts +2 -2
  231. package/dist/middlewares/session.d.ts.map +1 -1
  232. package/dist/middlewares/session.js +2 -2
  233. package/dist/middlewares/session.js.map +1 -1
  234. package/dist/middlewares/session.mjs.map +1 -1
  235. package/dist/migrations/database/5.0.0-discard-drafts.d.ts +33 -0
  236. package/dist/migrations/database/5.0.0-discard-drafts.d.ts.map +1 -0
  237. package/dist/migrations/database/5.0.0-discard-drafts.js +94 -0
  238. package/dist/migrations/database/5.0.0-discard-drafts.js.map +1 -0
  239. package/dist/migrations/database/5.0.0-discard-drafts.mjs +94 -0
  240. package/dist/migrations/database/5.0.0-discard-drafts.mjs.map +1 -0
  241. package/dist/migrations/draft-publish.d.ts +1 -1
  242. package/dist/migrations/draft-publish.d.ts.map +1 -1
  243. package/dist/migrations/draft-publish.js +14 -31
  244. package/dist/migrations/draft-publish.js.map +1 -1
  245. package/dist/migrations/draft-publish.mjs +15 -32
  246. package/dist/migrations/draft-publish.mjs.map +1 -1
  247. package/dist/migrations/i18n.d.ts +5 -0
  248. package/dist/migrations/i18n.d.ts.map +1 -0
  249. package/dist/migrations/i18n.js +54 -0
  250. package/dist/migrations/i18n.js.map +1 -0
  251. package/dist/migrations/i18n.mjs +54 -0
  252. package/dist/migrations/i18n.mjs.map +1 -0
  253. package/dist/migrations/index.d.ts +5 -0
  254. package/dist/migrations/index.d.ts.map +1 -0
  255. package/dist/migrations/index.js +15 -0
  256. package/dist/migrations/index.js.map +1 -0
  257. package/dist/migrations/index.mjs +15 -0
  258. package/dist/migrations/index.mjs.map +1 -0
  259. package/dist/providers/admin.d.ts +3 -0
  260. package/dist/providers/admin.d.ts.map +1 -0
  261. package/dist/providers/admin.js +20 -0
  262. package/dist/providers/admin.js.map +1 -0
  263. package/dist/providers/admin.mjs +21 -0
  264. package/dist/providers/admin.mjs.map +1 -0
  265. package/dist/providers/coreStore.d.ts +3 -0
  266. package/dist/providers/coreStore.d.ts.map +1 -0
  267. package/dist/providers/coreStore.js +11 -0
  268. package/dist/providers/coreStore.js.map +1 -0
  269. package/dist/providers/coreStore.mjs +12 -0
  270. package/dist/providers/coreStore.mjs.map +1 -0
  271. package/dist/providers/cron.d.ts +3 -0
  272. package/dist/providers/cron.d.ts.map +1 -0
  273. package/dist/providers/cron.js +20 -0
  274. package/dist/providers/cron.js.map +1 -0
  275. package/dist/providers/cron.mjs +21 -0
  276. package/dist/providers/cron.mjs.map +1 -0
  277. package/dist/providers/index.d.ts +3 -0
  278. package/dist/providers/index.d.ts.map +1 -0
  279. package/dist/providers/index.js +11 -0
  280. package/dist/providers/index.js.map +1 -0
  281. package/dist/providers/index.mjs +11 -0
  282. package/dist/providers/index.mjs.map +1 -0
  283. package/dist/providers/provider.d.ts +9 -0
  284. package/dist/providers/provider.d.ts.map +1 -0
  285. package/dist/providers/provider.js +5 -0
  286. package/dist/providers/provider.js.map +1 -0
  287. package/dist/providers/provider.mjs +5 -0
  288. package/dist/providers/provider.mjs.map +1 -0
  289. package/dist/providers/registries.d.ts +3 -0
  290. package/dist/providers/registries.d.ts.map +1 -0
  291. package/dist/providers/registries.js +35 -0
  292. package/dist/providers/registries.js.map +1 -0
  293. package/dist/providers/registries.mjs +36 -0
  294. package/dist/providers/registries.mjs.map +1 -0
  295. package/dist/providers/telemetry.d.ts +3 -0
  296. package/dist/providers/telemetry.d.ts.map +1 -0
  297. package/dist/providers/telemetry.js +19 -0
  298. package/dist/providers/telemetry.js.map +1 -0
  299. package/dist/providers/telemetry.mjs +20 -0
  300. package/dist/providers/telemetry.mjs.map +1 -0
  301. package/dist/providers/webhooks.d.ts +3 -0
  302. package/dist/providers/webhooks.d.ts.map +1 -0
  303. package/dist/providers/webhooks.js +30 -0
  304. package/dist/providers/webhooks.js.map +1 -0
  305. package/dist/providers/webhooks.mjs +31 -0
  306. package/dist/providers/webhooks.mjs.map +1 -0
  307. package/dist/registries/apis.d.ts +2 -2
  308. package/dist/registries/apis.d.ts.map +1 -1
  309. package/dist/registries/apis.js +2 -2
  310. package/dist/registries/apis.js.map +1 -1
  311. package/dist/registries/apis.mjs.map +1 -1
  312. package/dist/registries/components.d.ts +6 -6
  313. package/dist/registries/components.d.ts.map +1 -1
  314. package/dist/registries/components.js +2 -2
  315. package/dist/registries/components.js.map +1 -1
  316. package/dist/registries/components.mjs.map +1 -1
  317. package/dist/registries/content-types.d.ts +5 -5
  318. package/dist/registries/content-types.d.ts.map +1 -1
  319. package/dist/registries/content-types.js +3 -3
  320. package/dist/registries/content-types.js.map +1 -1
  321. package/dist/registries/content-types.mjs.map +1 -1
  322. package/dist/registries/controllers.d.ts +10 -10
  323. package/dist/registries/controllers.d.ts.map +1 -1
  324. package/dist/registries/controllers.js +3 -3
  325. package/dist/registries/controllers.js.map +1 -1
  326. package/dist/registries/controllers.mjs.map +1 -1
  327. package/dist/registries/custom-fields.d.ts +3 -3
  328. package/dist/registries/custom-fields.d.ts.map +1 -1
  329. package/dist/registries/custom-fields.js +4 -4
  330. package/dist/registries/custom-fields.js.map +1 -1
  331. package/dist/registries/custom-fields.mjs.map +1 -1
  332. package/dist/registries/hooks.js +2 -2
  333. package/dist/registries/hooks.js.map +1 -1
  334. package/dist/registries/index.d.ts +0 -1
  335. package/dist/registries/index.d.ts.map +1 -1
  336. package/dist/registries/middlewares.d.ts +6 -6
  337. package/dist/registries/middlewares.d.ts.map +1 -1
  338. package/dist/registries/middlewares.js +3 -3
  339. package/dist/registries/middlewares.js.map +1 -1
  340. package/dist/registries/middlewares.mjs.map +1 -1
  341. package/dist/registries/modules.d.ts +2 -2
  342. package/dist/registries/modules.d.ts.map +1 -1
  343. package/dist/registries/modules.js +3 -3
  344. package/dist/registries/modules.js.map +1 -1
  345. package/dist/registries/modules.mjs.map +1 -1
  346. package/dist/registries/plugins.d.ts +5 -5
  347. package/dist/registries/plugins.d.ts.map +1 -1
  348. package/dist/registries/plugins.js +2 -2
  349. package/dist/registries/plugins.js.map +1 -1
  350. package/dist/registries/plugins.mjs.map +1 -1
  351. package/dist/registries/policies.d.ts +22 -10
  352. package/dist/registries/policies.d.ts.map +1 -1
  353. package/dist/registries/policies.js +66 -20
  354. package/dist/registries/policies.js.map +1 -1
  355. package/dist/registries/policies.mjs +65 -19
  356. package/dist/registries/policies.mjs.map +1 -1
  357. package/dist/registries/services.d.ts +8 -8
  358. package/dist/registries/services.d.ts.map +1 -1
  359. package/dist/registries/services.js +3 -3
  360. package/dist/registries/services.js.map +1 -1
  361. package/dist/registries/services.mjs.map +1 -1
  362. package/dist/services/auth/index.d.ts +4 -4
  363. package/dist/services/auth/index.d.ts.map +1 -1
  364. package/dist/services/auth/index.js +3 -3
  365. package/dist/services/auth/index.js.map +1 -1
  366. package/dist/services/auth/index.mjs.map +1 -1
  367. package/dist/services/config.d.ts +3 -0
  368. package/dist/services/config.d.ts.map +1 -0
  369. package/dist/services/config.js +47 -0
  370. package/dist/services/config.js.map +1 -0
  371. package/dist/services/config.mjs +47 -0
  372. package/dist/services/config.mjs.map +1 -0
  373. package/dist/services/content-api/index.d.ts +31 -15
  374. package/dist/services/content-api/index.d.ts.map +1 -1
  375. package/dist/services/content-api/index.js +28 -2
  376. package/dist/services/content-api/index.js.map +1 -1
  377. package/dist/services/content-api/index.mjs +28 -2
  378. package/dist/services/content-api/index.mjs.map +1 -1
  379. package/dist/services/content-api/permissions/index.d.ts +13 -15
  380. package/dist/services/content-api/permissions/index.d.ts.map +1 -1
  381. package/dist/services/content-api/permissions/index.js +1 -1
  382. package/dist/services/content-api/permissions/index.js.map +1 -1
  383. package/dist/services/content-api/permissions/index.mjs +1 -1
  384. package/dist/services/content-api/permissions/index.mjs.map +1 -1
  385. package/dist/services/content-api/permissions/providers/action.d.ts +5 -6
  386. package/dist/services/content-api/permissions/providers/action.d.ts.map +1 -1
  387. package/dist/services/content-api/permissions/providers/condition.d.ts +5 -6
  388. package/dist/services/content-api/permissions/providers/condition.d.ts.map +1 -1
  389. package/dist/services/core-store.d.ts.map +1 -1
  390. package/dist/services/core-store.js +3 -3
  391. package/dist/services/core-store.js.map +1 -1
  392. package/dist/services/cron.d.ts +5 -5
  393. package/dist/services/cron.d.ts.map +1 -1
  394. package/dist/services/cron.js +3 -3
  395. package/dist/services/cron.js.map +1 -1
  396. package/dist/services/cron.mjs.map +1 -1
  397. package/dist/services/custom-fields.d.ts +2 -2
  398. package/dist/services/custom-fields.d.ts.map +1 -1
  399. package/dist/services/custom-fields.js.map +1 -1
  400. package/dist/services/custom-fields.mjs.map +1 -1
  401. package/dist/services/document-service/attributes/index.d.ts +6 -0
  402. package/dist/services/document-service/attributes/index.d.ts.map +1 -0
  403. package/dist/services/{entity-service → document-service}/attributes/index.js +5 -5
  404. package/dist/services/document-service/attributes/index.js.map +1 -0
  405. package/dist/services/{entity-service → document-service}/attributes/index.mjs +5 -5
  406. package/dist/services/document-service/attributes/index.mjs.map +1 -0
  407. package/dist/services/document-service/attributes/transforms.d.ts +10 -0
  408. package/dist/services/document-service/attributes/transforms.d.ts.map +1 -0
  409. package/dist/services/{entity-service → document-service}/attributes/transforms.js +3 -3
  410. package/dist/services/document-service/attributes/transforms.js.map +1 -0
  411. package/dist/services/document-service/attributes/transforms.mjs.map +1 -0
  412. package/dist/services/document-service/common.d.ts +2 -2
  413. package/dist/services/document-service/common.d.ts.map +1 -1
  414. package/dist/services/document-service/common.js.map +1 -1
  415. package/dist/services/document-service/common.mjs.map +1 -1
  416. package/dist/services/document-service/components.d.ts +25 -1
  417. package/dist/services/document-service/components.d.ts.map +1 -1
  418. package/dist/services/{entity-service → document-service}/components.js +52 -148
  419. package/dist/services/document-service/components.js.map +1 -0
  420. package/dist/services/{entity-service → document-service}/components.mjs +42 -138
  421. package/dist/services/document-service/components.mjs.map +1 -0
  422. package/dist/services/document-service/draft-and-publish.d.ts +7 -7
  423. package/dist/services/document-service/draft-and-publish.d.ts.map +1 -1
  424. package/dist/services/document-service/draft-and-publish.js +16 -16
  425. package/dist/services/document-service/draft-and-publish.js.map +1 -1
  426. package/dist/services/document-service/draft-and-publish.mjs.map +1 -1
  427. package/dist/services/document-service/entries.d.ts +10 -0
  428. package/dist/services/document-service/entries.d.ts.map +1 -0
  429. package/dist/services/document-service/entries.js +96 -0
  430. package/dist/services/document-service/entries.js.map +1 -0
  431. package/dist/services/document-service/entries.mjs +96 -0
  432. package/dist/services/document-service/entries.mjs.map +1 -0
  433. package/dist/services/document-service/events.d.ts +25 -0
  434. package/dist/services/document-service/events.d.ts.map +1 -0
  435. package/dist/services/document-service/events.js +47 -0
  436. package/dist/services/document-service/events.js.map +1 -0
  437. package/dist/services/document-service/events.mjs +47 -0
  438. package/dist/services/document-service/events.mjs.map +1 -0
  439. package/dist/services/document-service/index.d.ts +2 -4
  440. package/dist/services/document-service/index.d.ts.map +1 -1
  441. package/dist/services/document-service/index.js +18 -5
  442. package/dist/services/document-service/index.js.map +1 -1
  443. package/dist/services/document-service/index.mjs +16 -3
  444. package/dist/services/document-service/index.mjs.map +1 -1
  445. package/dist/services/document-service/internationalization.d.ts +5 -5
  446. package/dist/services/document-service/internationalization.d.ts.map +1 -1
  447. package/dist/services/document-service/internationalization.js +21 -12
  448. package/dist/services/document-service/internationalization.js.map +1 -1
  449. package/dist/services/document-service/internationalization.mjs +14 -5
  450. package/dist/services/document-service/internationalization.mjs.map +1 -1
  451. package/dist/services/document-service/middlewares/errors.d.ts +6 -0
  452. package/dist/services/document-service/middlewares/errors.d.ts.map +1 -0
  453. package/dist/services/document-service/middlewares/errors.js +25 -0
  454. package/dist/services/document-service/middlewares/errors.js.map +1 -0
  455. package/dist/services/document-service/middlewares/errors.mjs +25 -0
  456. package/dist/services/document-service/middlewares/errors.mjs.map +1 -0
  457. package/dist/services/document-service/middlewares/index.d.ts +3 -0
  458. package/dist/services/document-service/middlewares/index.d.ts.map +1 -0
  459. package/dist/services/document-service/middlewares/middleware-manager.d.ts +10 -0
  460. package/dist/services/document-service/middlewares/middleware-manager.d.ts.map +1 -0
  461. package/dist/services/document-service/{middlewares.js → middlewares/middleware-manager.js} +9 -6
  462. package/dist/services/document-service/middlewares/middleware-manager.js.map +1 -0
  463. package/dist/services/document-service/{middlewares.mjs → middlewares/middleware-manager.mjs} +9 -6
  464. package/dist/services/document-service/middlewares/middleware-manager.mjs.map +1 -0
  465. package/dist/services/document-service/params.d.ts +3 -1
  466. package/dist/services/document-service/params.d.ts.map +1 -1
  467. package/dist/services/{entity-service → document-service}/params.js +2 -2
  468. package/dist/services/document-service/params.js.map +1 -0
  469. package/dist/services/document-service/params.mjs.map +1 -0
  470. package/dist/services/document-service/repository.d.ts.map +1 -1
  471. package/dist/services/document-service/repository.js +195 -185
  472. package/dist/services/document-service/repository.js.map +1 -1
  473. package/dist/services/document-service/repository.mjs +175 -165
  474. package/dist/services/document-service/repository.mjs.map +1 -1
  475. package/dist/services/document-service/transform/data.d.ts.map +1 -1
  476. package/dist/services/document-service/transform/data.js +4 -2
  477. package/dist/services/document-service/transform/data.js.map +1 -1
  478. package/dist/services/document-service/transform/data.mjs +4 -2
  479. package/dist/services/document-service/transform/data.mjs.map +1 -1
  480. package/dist/services/document-service/transform/fields.d.ts +2 -2
  481. package/dist/services/document-service/transform/fields.d.ts.map +1 -1
  482. package/dist/services/document-service/transform/fields.js.map +1 -1
  483. package/dist/services/document-service/transform/fields.mjs.map +1 -1
  484. package/dist/services/document-service/transform/id-map.d.ts +3 -3
  485. package/dist/services/document-service/transform/id-map.d.ts.map +1 -1
  486. package/dist/services/document-service/transform/id-map.js.map +1 -1
  487. package/dist/services/document-service/transform/id-map.mjs.map +1 -1
  488. package/dist/services/document-service/transform/id-transform.d.ts +2 -2
  489. package/dist/services/document-service/transform/id-transform.d.ts.map +1 -1
  490. package/dist/services/document-service/transform/id-transform.js +2 -2
  491. package/dist/services/document-service/transform/id-transform.js.map +1 -1
  492. package/dist/services/document-service/transform/id-transform.mjs.map +1 -1
  493. package/dist/services/document-service/transform/populate.d.ts +2 -2
  494. package/dist/services/document-service/transform/populate.d.ts.map +1 -1
  495. package/dist/services/document-service/transform/populate.js +1 -1
  496. package/dist/services/document-service/transform/populate.js.map +1 -1
  497. package/dist/services/document-service/transform/populate.mjs +1 -1
  498. package/dist/services/document-service/transform/populate.mjs.map +1 -1
  499. package/dist/services/document-service/transform/query.d.ts +5 -0
  500. package/dist/services/document-service/transform/query.d.ts.map +1 -0
  501. package/dist/services/document-service/transform/query.js +9 -0
  502. package/dist/services/document-service/transform/query.js.map +1 -0
  503. package/dist/services/document-service/transform/query.mjs +9 -0
  504. package/dist/services/document-service/transform/query.mjs.map +1 -0
  505. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts +8 -7
  506. package/dist/services/document-service/transform/relations/extract/data-ids.d.ts.map +1 -1
  507. package/dist/services/document-service/transform/relations/extract/data-ids.js +45 -78
  508. package/dist/services/document-service/transform/relations/extract/data-ids.js.map +1 -1
  509. package/dist/services/document-service/transform/relations/extract/data-ids.mjs +44 -77
  510. package/dist/services/document-service/transform/relations/extract/data-ids.mjs.map +1 -1
  511. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts +8 -4
  512. package/dist/services/document-service/transform/relations/transform/data-ids.d.ts.map +1 -1
  513. package/dist/services/document-service/transform/relations/transform/data-ids.js +61 -126
  514. package/dist/services/document-service/transform/relations/transform/data-ids.js.map +1 -1
  515. package/dist/services/document-service/transform/relations/transform/data-ids.mjs +61 -126
  516. package/dist/services/document-service/transform/relations/transform/data-ids.mjs.map +1 -1
  517. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts +9 -0
  518. package/dist/services/document-service/transform/relations/transform/default-locale.d.ts.map +1 -0
  519. package/dist/services/document-service/transform/relations/transform/default-locale.js +32 -0
  520. package/dist/services/document-service/transform/relations/transform/default-locale.js.map +1 -0
  521. package/dist/services/document-service/transform/relations/transform/default-locale.mjs +32 -0
  522. package/dist/services/document-service/transform/relations/transform/default-locale.mjs.map +1 -0
  523. package/dist/services/document-service/transform/relations/utils/dp.d.ts +3 -3
  524. package/dist/services/document-service/transform/relations/utils/dp.d.ts.map +1 -1
  525. package/dist/services/document-service/transform/relations/utils/dp.js +10 -5
  526. package/dist/services/document-service/transform/relations/utils/dp.js.map +1 -1
  527. package/dist/services/document-service/transform/relations/utils/dp.mjs +9 -4
  528. package/dist/services/document-service/transform/relations/utils/dp.mjs.map +1 -1
  529. package/dist/services/document-service/transform/relations/utils/i18n.d.ts +6 -6
  530. package/dist/services/document-service/transform/relations/utils/i18n.d.ts.map +1 -1
  531. package/dist/services/document-service/transform/relations/utils/i18n.js +3 -9
  532. package/dist/services/document-service/transform/relations/utils/i18n.js.map +1 -1
  533. package/dist/services/document-service/transform/relations/utils/i18n.mjs +3 -9
  534. package/dist/services/document-service/transform/relations/utils/i18n.mjs.map +1 -1
  535. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts +6 -0
  536. package/dist/services/document-service/transform/relations/utils/map-relation.d.ts.map +1 -0
  537. package/dist/services/document-service/transform/relations/utils/map-relation.js +91 -0
  538. package/dist/services/document-service/transform/relations/utils/map-relation.js.map +1 -0
  539. package/dist/services/document-service/transform/relations/utils/map-relation.mjs +91 -0
  540. package/dist/services/document-service/transform/relations/utils/map-relation.mjs.map +1 -0
  541. package/dist/services/document-service/transform/relations/utils/types.d.ts +6 -0
  542. package/dist/services/document-service/transform/relations/utils/types.d.ts.map +1 -1
  543. package/dist/services/document-service/transform/types.d.ts +3 -3
  544. package/dist/services/document-service/transform/types.d.ts.map +1 -1
  545. package/dist/services/document-service/utils/populate.d.ts +9 -2
  546. package/dist/services/document-service/utils/populate.d.ts.map +1 -1
  547. package/dist/services/document-service/utils/populate.js +11 -5
  548. package/dist/services/document-service/utils/populate.js.map +1 -1
  549. package/dist/services/document-service/utils/populate.mjs +11 -5
  550. package/dist/services/document-service/utils/populate.mjs.map +1 -1
  551. package/dist/services/document-service/utils/unidirectional-relations.d.ts +33 -0
  552. package/dist/services/document-service/utils/unidirectional-relations.d.ts.map +1 -0
  553. package/dist/services/document-service/utils/unidirectional-relations.js +58 -0
  554. package/dist/services/document-service/utils/unidirectional-relations.js.map +1 -0
  555. package/dist/services/document-service/utils/unidirectional-relations.mjs +58 -0
  556. package/dist/services/document-service/utils/unidirectional-relations.mjs.map +1 -0
  557. package/dist/services/entity-service/index.d.ts +4 -6
  558. package/dist/services/entity-service/index.d.ts.map +1 -1
  559. package/dist/services/entity-service/index.js +44 -203
  560. package/dist/services/entity-service/index.js.map +1 -1
  561. package/dist/services/entity-service/index.mjs +38 -197
  562. package/dist/services/entity-service/index.mjs.map +1 -1
  563. package/dist/services/entity-validator/blocks-validator.d.ts +1 -2
  564. package/dist/services/entity-validator/blocks-validator.d.ts.map +1 -1
  565. package/dist/services/entity-validator/blocks-validator.js +4 -3
  566. package/dist/services/entity-validator/blocks-validator.js.map +1 -1
  567. package/dist/services/entity-validator/blocks-validator.mjs +3 -3
  568. package/dist/services/entity-validator/blocks-validator.mjs.map +1 -1
  569. package/dist/services/entity-validator/index.d.ts +16 -2
  570. package/dist/services/entity-validator/index.d.ts.map +1 -1
  571. package/dist/services/entity-validator/index.js +197 -130
  572. package/dist/services/entity-validator/index.js.map +1 -1
  573. package/dist/services/entity-validator/index.mjs +192 -125
  574. package/dist/services/entity-validator/index.mjs.map +1 -1
  575. package/dist/services/entity-validator/validators.d.ts +36 -25
  576. package/dist/services/entity-validator/validators.d.ts.map +1 -1
  577. package/dist/services/entity-validator/validators.js +153 -33
  578. package/dist/services/entity-validator/validators.js.map +1 -1
  579. package/dist/services/entity-validator/validators.mjs +145 -25
  580. package/dist/services/entity-validator/validators.mjs.map +1 -1
  581. package/dist/services/event-hub.d.ts +1 -0
  582. package/dist/services/event-hub.d.ts.map +1 -1
  583. package/dist/services/event-hub.js +9 -4
  584. package/dist/services/event-hub.js.map +1 -1
  585. package/dist/services/event-hub.mjs +9 -4
  586. package/dist/services/event-hub.mjs.map +1 -1
  587. package/dist/services/features.d.ts +3 -3
  588. package/dist/services/features.d.ts.map +1 -1
  589. package/dist/services/features.js.map +1 -1
  590. package/dist/services/features.mjs.map +1 -1
  591. package/dist/services/fs.d.ts +2 -2
  592. package/dist/services/fs.d.ts.map +1 -1
  593. package/dist/services/fs.js.map +1 -1
  594. package/dist/services/fs.mjs.map +1 -1
  595. package/dist/services/metrics/admin-user-hash.d.ts +2 -2
  596. package/dist/services/metrics/admin-user-hash.d.ts.map +1 -1
  597. package/dist/services/metrics/admin-user-hash.js.map +1 -1
  598. package/dist/services/metrics/admin-user-hash.mjs.map +1 -1
  599. package/dist/services/metrics/index.d.ts +2 -2
  600. package/dist/services/metrics/index.d.ts.map +1 -1
  601. package/dist/services/metrics/index.js.map +1 -1
  602. package/dist/services/metrics/index.mjs.map +1 -1
  603. package/dist/services/metrics/middleware.d.ts +2 -2
  604. package/dist/services/metrics/middleware.d.ts.map +1 -1
  605. package/dist/services/metrics/middleware.js.map +1 -1
  606. package/dist/services/metrics/middleware.mjs.map +1 -1
  607. package/dist/services/metrics/rate-limiter.d.ts.map +1 -1
  608. package/dist/services/metrics/rate-limiter.js.map +1 -1
  609. package/dist/services/metrics/rate-limiter.mjs.map +1 -1
  610. package/dist/services/metrics/sender.d.ts +3 -3
  611. package/dist/services/metrics/sender.d.ts.map +1 -1
  612. package/dist/services/metrics/sender.js.map +1 -1
  613. package/dist/services/metrics/sender.mjs.map +1 -1
  614. package/dist/services/query-params.d.ts +7 -0
  615. package/dist/services/query-params.d.ts.map +1 -0
  616. package/dist/services/query-params.js +12 -0
  617. package/dist/services/query-params.js.map +1 -0
  618. package/dist/services/query-params.mjs +13 -0
  619. package/dist/services/query-params.mjs.map +1 -0
  620. package/dist/services/reloader.d.ts +7 -0
  621. package/dist/services/reloader.d.ts.map +1 -0
  622. package/dist/services/reloader.js +36 -0
  623. package/dist/services/reloader.js.map +1 -0
  624. package/dist/services/reloader.mjs +36 -0
  625. package/dist/services/reloader.mjs.map +1 -0
  626. package/dist/services/server/admin-api.d.ts +3 -3
  627. package/dist/services/server/admin-api.d.ts.map +1 -1
  628. package/dist/services/server/admin-api.js.map +1 -1
  629. package/dist/services/server/admin-api.mjs.map +1 -1
  630. package/dist/services/server/api.d.ts +3 -3
  631. package/dist/services/server/api.d.ts.map +1 -1
  632. package/dist/services/server/api.js.map +1 -1
  633. package/dist/services/server/api.mjs.map +1 -1
  634. package/dist/services/server/compose-endpoint.d.ts +2 -2
  635. package/dist/services/server/compose-endpoint.d.ts.map +1 -1
  636. package/dist/services/server/compose-endpoint.js +8 -9
  637. package/dist/services/server/compose-endpoint.js.map +1 -1
  638. package/dist/services/server/compose-endpoint.mjs +2 -3
  639. package/dist/services/server/compose-endpoint.mjs.map +1 -1
  640. package/dist/services/server/content-api.d.ts +3 -3
  641. package/dist/services/server/content-api.d.ts.map +1 -1
  642. package/dist/services/server/content-api.js.map +1 -1
  643. package/dist/services/server/content-api.mjs.map +1 -1
  644. package/dist/services/server/http-server.d.ts +2 -2
  645. package/dist/services/server/http-server.d.ts.map +1 -1
  646. package/dist/services/server/http-server.js.map +1 -1
  647. package/dist/services/server/http-server.mjs.map +1 -1
  648. package/dist/services/server/index.d.ts +2 -2
  649. package/dist/services/server/index.d.ts.map +1 -1
  650. package/dist/services/server/index.js +2 -3
  651. package/dist/services/server/index.js.map +1 -1
  652. package/dist/services/server/index.mjs +2 -3
  653. package/dist/services/server/index.mjs.map +1 -1
  654. package/dist/services/server/koa.d.ts.map +1 -1
  655. package/dist/services/server/koa.js +4 -4
  656. package/dist/services/server/koa.js.map +1 -1
  657. package/dist/services/server/koa.mjs +1 -1
  658. package/dist/services/server/koa.mjs.map +1 -1
  659. package/dist/services/server/middleware.d.ts +4 -4
  660. package/dist/services/server/middleware.d.ts.map +1 -1
  661. package/dist/services/server/middleware.js +3 -3
  662. package/dist/services/server/middleware.js.map +1 -1
  663. package/dist/services/server/middleware.mjs.map +1 -1
  664. package/dist/services/server/policy.d.ts +3 -3
  665. package/dist/services/server/policy.d.ts.map +1 -1
  666. package/dist/services/server/policy.js +4 -4
  667. package/dist/services/server/policy.js.map +1 -1
  668. package/dist/services/server/policy.mjs +4 -4
  669. package/dist/services/server/policy.mjs.map +1 -1
  670. package/dist/services/server/register-middlewares.d.ts +2 -2
  671. package/dist/services/server/register-middlewares.d.ts.map +1 -1
  672. package/dist/services/server/register-middlewares.js.map +1 -1
  673. package/dist/services/server/register-middlewares.mjs.map +1 -1
  674. package/dist/services/server/register-routes.d.ts +2 -2
  675. package/dist/services/server/register-routes.d.ts.map +1 -1
  676. package/dist/services/server/register-routes.js +3 -3
  677. package/dist/services/server/register-routes.js.map +1 -1
  678. package/dist/services/server/register-routes.mjs +3 -3
  679. package/dist/services/server/register-routes.mjs.map +1 -1
  680. package/dist/services/server/routing.d.ts +5 -5
  681. package/dist/services/server/routing.d.ts.map +1 -1
  682. package/dist/services/server/routing.js +2 -2
  683. package/dist/services/server/routing.js.map +1 -1
  684. package/dist/services/server/routing.mjs.map +1 -1
  685. package/dist/services/utils/dynamic-zones.d.ts.map +1 -1
  686. package/dist/services/utils/dynamic-zones.js +7 -6
  687. package/dist/services/utils/dynamic-zones.js.map +1 -1
  688. package/dist/services/utils/dynamic-zones.mjs +2 -1
  689. package/dist/services/utils/dynamic-zones.mjs.map +1 -1
  690. package/dist/services/webhook-runner.d.ts +2 -1
  691. package/dist/services/webhook-runner.d.ts.map +1 -1
  692. package/dist/services/webhook-runner.js.map +1 -1
  693. package/dist/services/webhook-runner.mjs.map +1 -1
  694. package/dist/services/webhook-store.d.ts +2 -8
  695. package/dist/services/webhook-store.d.ts.map +1 -1
  696. package/dist/services/webhook-store.js +14 -8
  697. package/dist/services/webhook-store.js.map +1 -1
  698. package/dist/services/webhook-store.mjs +14 -8
  699. package/dist/services/webhook-store.mjs.map +1 -1
  700. package/dist/utils/convert-custom-field-type.d.ts +2 -2
  701. package/dist/utils/convert-custom-field-type.d.ts.map +1 -1
  702. package/dist/utils/convert-custom-field-type.js.map +1 -1
  703. package/dist/utils/convert-custom-field-type.mjs.map +1 -1
  704. package/dist/utils/cron.js +3 -3
  705. package/dist/utils/cron.js.map +1 -1
  706. package/dist/utils/fetch.d.ts +3 -3
  707. package/dist/utils/fetch.d.ts.map +1 -1
  708. package/dist/utils/fetch.js +4 -3
  709. package/dist/utils/fetch.js.map +1 -1
  710. package/dist/utils/fetch.mjs +4 -3
  711. package/dist/utils/fetch.mjs.map +1 -1
  712. package/dist/utils/filepath-to-prop-path.d.ts +1 -1
  713. package/dist/utils/filepath-to-prop-path.d.ts.map +1 -1
  714. package/dist/utils/filepath-to-prop-path.js +27 -6
  715. package/dist/utils/filepath-to-prop-path.js.map +1 -1
  716. package/dist/utils/filepath-to-prop-path.mjs +25 -5
  717. package/dist/utils/filepath-to-prop-path.mjs.map +1 -1
  718. package/dist/utils/index.d.ts +2 -1
  719. package/dist/utils/index.d.ts.map +1 -1
  720. package/dist/utils/is-initialized.d.ts +2 -2
  721. package/dist/utils/is-initialized.d.ts.map +1 -1
  722. package/dist/utils/is-initialized.js +4 -4
  723. package/dist/utils/is-initialized.js.map +1 -1
  724. package/dist/utils/is-initialized.mjs +1 -1
  725. package/dist/utils/is-initialized.mjs.map +1 -1
  726. package/dist/utils/load-files.d.ts.map +1 -1
  727. package/dist/utils/open-browser.d.ts +2 -2
  728. package/dist/utils/open-browser.d.ts.map +1 -1
  729. package/dist/utils/open-browser.js.map +1 -1
  730. package/dist/utils/open-browser.mjs.map +1 -1
  731. package/dist/utils/resolve-working-dirs.d.ts +19 -0
  732. package/dist/utils/resolve-working-dirs.d.ts.map +1 -0
  733. package/dist/utils/resolve-working-dirs.js +13 -0
  734. package/dist/utils/resolve-working-dirs.js.map +1 -0
  735. package/dist/utils/resolve-working-dirs.mjs +11 -0
  736. package/dist/utils/resolve-working-dirs.mjs.map +1 -0
  737. package/dist/utils/signals.d.ts +2 -2
  738. package/dist/utils/signals.d.ts.map +1 -1
  739. package/dist/utils/signals.js.map +1 -1
  740. package/dist/utils/signals.mjs.map +1 -1
  741. package/dist/utils/startup-logger.d.ts +2 -2
  742. package/dist/utils/startup-logger.d.ts.map +1 -1
  743. package/dist/utils/startup-logger.js +4 -4
  744. package/dist/utils/startup-logger.js.map +1 -1
  745. package/dist/utils/startup-logger.mjs +3 -3
  746. package/dist/utils/startup-logger.mjs.map +1 -1
  747. package/dist/utils/transform-content-types-to-models.d.ts +54 -99
  748. package/dist/utils/transform-content-types-to-models.d.ts.map +1 -1
  749. package/dist/utils/transform-content-types-to-models.js +112 -61
  750. package/dist/utils/transform-content-types-to-models.js.map +1 -1
  751. package/dist/utils/transform-content-types-to-models.mjs +111 -60
  752. package/dist/utils/transform-content-types-to-models.mjs.map +1 -1
  753. package/dist/utils/update-notifier/index.d.ts +2 -7
  754. package/dist/utils/update-notifier/index.d.ts.map +1 -1
  755. package/dist/utils/update-notifier/index.js +11 -14
  756. package/dist/utils/update-notifier/index.js.map +1 -1
  757. package/dist/utils/update-notifier/index.mjs +11 -14
  758. package/dist/utils/update-notifier/index.mjs.map +1 -1
  759. package/package.json +34 -30
  760. package/dist/registries/config.d.ts +0 -4
  761. package/dist/registries/config.d.ts.map +0 -1
  762. package/dist/registries/config.js +0 -31
  763. package/dist/registries/config.js.map +0 -1
  764. package/dist/registries/config.mjs +0 -32
  765. package/dist/registries/config.mjs.map +0 -1
  766. package/dist/services/document-service/middlewares.d.ts +0 -8
  767. package/dist/services/document-service/middlewares.d.ts.map +0 -1
  768. package/dist/services/document-service/middlewares.js.map +0 -1
  769. package/dist/services/document-service/middlewares.mjs.map +0 -1
  770. package/dist/services/document-service/transform/filters.d.ts +0 -3
  771. package/dist/services/document-service/transform/filters.d.ts.map +0 -1
  772. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts +0 -4
  773. package/dist/services/document-service/transform/relations/transform/output-ids.d.ts.map +0 -1
  774. package/dist/services/document-service/transform/relations/utils/data.js +0 -12
  775. package/dist/services/document-service/transform/relations/utils/data.js.map +0 -1
  776. package/dist/services/document-service/transform/relations/utils/data.mjs +0 -12
  777. package/dist/services/document-service/transform/relations/utils/data.mjs.map +0 -1
  778. package/dist/services/document-service/transform/sort.d.ts +0 -5
  779. package/dist/services/document-service/transform/sort.d.ts.map +0 -1
  780. package/dist/services/document-service/transform/utils.d.ts +0 -9
  781. package/dist/services/document-service/transform/utils.d.ts.map +0 -1
  782. package/dist/services/entity-service/attributes/index.d.ts +0 -6
  783. package/dist/services/entity-service/attributes/index.d.ts.map +0 -1
  784. package/dist/services/entity-service/attributes/index.js.map +0 -1
  785. package/dist/services/entity-service/attributes/index.mjs.map +0 -1
  786. package/dist/services/entity-service/attributes/transforms.d.ts +0 -10
  787. package/dist/services/entity-service/attributes/transforms.d.ts.map +0 -1
  788. package/dist/services/entity-service/attributes/transforms.js.map +0 -1
  789. package/dist/services/entity-service/attributes/transforms.mjs.map +0 -1
  790. package/dist/services/entity-service/components.d.ts +0 -23
  791. package/dist/services/entity-service/components.d.ts.map +0 -1
  792. package/dist/services/entity-service/components.js.map +0 -1
  793. package/dist/services/entity-service/components.mjs.map +0 -1
  794. package/dist/services/entity-service/params.d.ts +0 -8
  795. package/dist/services/entity-service/params.d.ts.map +0 -1
  796. package/dist/services/entity-service/params.js.map +0 -1
  797. package/dist/services/entity-service/params.mjs.map +0 -1
  798. package/dist/services/utils/upload-files.d.ts +0 -8
  799. package/dist/services/utils/upload-files.d.ts.map +0 -1
  800. package/dist/services/utils/upload-files.js +0 -64
  801. package/dist/services/utils/upload-files.js.map +0 -1
  802. package/dist/services/utils/upload-files.mjs +0 -63
  803. package/dist/services/utils/upload-files.mjs.map +0 -1
  804. package/dist/utils/get-dirs.d.ts +0 -9
  805. package/dist/utils/get-dirs.d.ts.map +0 -1
  806. package/dist/utils/get-dirs.js.map +0 -1
  807. package/dist/utils/get-dirs.mjs.map +0 -1
  808. /package/dist/services/{entity-service → document-service}/attributes/transforms.mjs +0 -0
  809. /package/dist/services/{entity-service → document-service}/params.mjs +0 -0
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n sanitize,\n errors,\n relations as relationUtils,\n convertQueryParams,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type {\n Strapi,\n EntityService,\n EntityValidator,\n EventHub,\n Common,\n Schema,\n Shared,\n Utils,\n} from '@strapi/types';\n\nimport uploadFiles from '../utils/upload-files';\n\nimport {\n omitComponentData,\n getComponents,\n createComponents,\n updateComponents,\n deleteComponents,\n cloneComponents,\n} from './components';\n\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\n\nconst { transformParamsToQuery } = convertQueryParams;\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: EntityService.EntityService) => EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\ntype Context = {\n contentType: Schema.ContentType;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = transformParamsToQuery(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst creationPipeline = (data: Record<string, unknown>, context: Context) => {\n return applyTransforms(data, context);\n};\n\nconst updatePipeline = (data: Record<string, unknown>, context: Context) => {\n return applyTransforms(data, context);\n};\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n ENTRY_CREATE: 'entry.create',\n ENTRY_UPDATE: 'entry.update',\n ENTRY_DELETE: 'entry.delete',\n};\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n eventHub,\n entityValidator,\n}: {\n strapi: Strapi;\n db: Database;\n eventHub: EventHub;\n entityValidator: EntityValidator;\n}): EntityService.EntityService => ({\n /**\n * Upload files utility\n */\n uploadFiles,\n\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async emitEvent(uid, event: string, entity) {\n // Ignore audit log events to prevent infinite loops\n if (uid === ('admin::audit-log' as Common.UID.ContentType)) {\n return;\n }\n\n const model = strapi.getModel(uid);\n const sanitizedEntity = await sanitize.sanitizers.defaultSanitizeOutput(model, entity);\n\n eventHub.emit(event, {\n model: model.modelName,\n uid: model.uid,\n entry: sanitizedEntity,\n });\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n if (kind === 'singleType') {\n const entity = db.query(uid).findOne(query);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await db.query(uid).findMany(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const page = await db.query(uid).findPage(query);\n return {\n ...page,\n results: await this.wrapResult(page.results, { uid, action: 'findPage' }),\n };\n },\n\n // TODO: streamline the logic based on the populate option\n async findWithRelationCountsPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findWithRelationCounts' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return {\n ...entities,\n results: await this.wrapResult(entities.results, { uid, action: 'findWithRelationCounts' }),\n };\n },\n\n async findWithRelationCounts(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findWithRelationCounts' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const entities = await db.query(uid).findMany(query);\n return this.wrapResult(entities, { uid, action: 'findWithRelationCounts' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n const entity = await db.query(uid).findOne({ ...query, where: { id: entityId } });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n return db.query(uid).count(query);\n },\n\n async create<\n TUID extends Common.UID.ContentType,\n TParams extends EntityService.Params.Pick<TUID, 'data' | 'files' | 'fields' | 'populate'>\n >(uid: TUID, params?: TParams) {\n const wrappedParams = await this.wrapParams<TParams>(params, { uid, action: 'create' });\n const { data, files } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const model = strapi.getModel(uid) as Shared.ContentTypes[Common.UID.ContentType];\n\n const isDraft = contentTypesUtils.isDraft(data, model);\n const validData = await entityValidator.validateEntityCreation(model, data, { isDraft });\n\n // select / populate\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap into transaction\n const componentData = await createComponents(uid, validData);\n\n const entityData = creationPipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n {\n contentType: model,\n }\n );\n let entity = await db.query(uid).create({\n ...query,\n data: entityData,\n });\n\n // TODO: do all of this in a transaction to avoid a race condition where entity is created then deleted before we do findOne again\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n entity = await this.wrapResult(entity, { uid, action: 'create' });\n\n const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_CREATE, entity);\n\n return entity;\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n EntityService.Params.Pick<typeof uid, 'data:partial' | 'files' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const { data, files } = wrappedParams;\n\n const model = strapi.getModel(uid);\n\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return null;\n }\n\n const isDraft = contentTypesUtils.isDraft(entityToUpdate, model);\n\n const validData = await entityValidator.validateEntityUpdate(\n model,\n data,\n {\n isDraft,\n },\n entityToUpdate\n );\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap in transaction\n const componentData = await updateComponents(uid, entityToUpdate, validData);\n const entityData = updatePipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n { contentType: model }\n );\n\n let entity = await db.query(uid).update({\n ...query,\n where: { id: entityId },\n data: entityData,\n });\n\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n entity = await this.wrapResult(entity, { uid, action: 'update' });\n\n const { ENTRY_UPDATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_UPDATE, entity);\n\n return entity;\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n // select / populate\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n let entityToDelete = await db.query(uid).findOne({\n ...query,\n where: { id: entityId },\n });\n\n if (!entityToDelete) {\n return null;\n }\n\n const componentsToDelete = await getComponents(uid, entityToDelete);\n\n await db.query(uid).delete({ where: { id: entityToDelete.id } });\n await deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n\n entityToDelete = await this.wrapResult(entityToDelete, { uid, action: 'delete' });\n\n const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_DELETE, entityToDelete);\n\n return entityToDelete;\n },\n\n async clone(uid, cloneId, opts) {\n const wrappedParams = await this.wrapParams<\n EntityService.Params.Pick<typeof uid, 'data' | 'files' | 'fields' | 'populate'>\n >(opts, { uid, action: 'clone' });\n const { data, files } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot clone');\n }\n\n const model = strapi.getModel(uid);\n\n const entityToClone = await db.query(uid).findOne({ where: { id: cloneId } });\n\n if (!entityToClone) {\n return null;\n }\n const isDraft = contentTypesUtils.isDraft(entityToClone, model);\n\n const validData = await entityValidator.validateEntityUpdate(\n model,\n // Omit the id, the cloned entity id will be generated by the database\n _.omit(data, ['id']) as Partial<typeof data>,\n { isDraft },\n entityToClone\n );\n\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap into transaction\n const componentData = await cloneComponents(uid, entityToClone, validData);\n\n const entityData = creationPipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n {\n contentType: model,\n }\n );\n\n let entity = await db.query(uid).clone(cloneId, {\n ...query,\n data: entityData,\n });\n\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_CREATE, entity);\n\n return entity;\n },\n // FIXME: used only for the CM to be removed\n async deleteMany(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n // select / populate\n const query = transformParamsToQuery(uid, wrappedParams);\n\n let entitiesToDelete = await db.query(uid).findMany(query);\n\n if (!entitiesToDelete.length) {\n return { count: 0 };\n }\n\n const componentsToDelete = await Promise.all(\n entitiesToDelete.map((entityToDelete) => getComponents(uid, entityToDelete))\n );\n\n const deletedEntities = await db.query(uid).deleteMany(query);\n await Promise.all(\n componentsToDelete.map((compos) =>\n deleteComponents(uid, compos as any, { loadComponents: false })\n )\n );\n\n entitiesToDelete = await this.wrapResult(entitiesToDelete, { uid, action: 'delete' });\n\n // Trigger webhooks. One for each entity\n const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;\n await Promise.all(entitiesToDelete.map((entity) => this.emitEvent(uid, ENTRY_DELETE, entity)));\n\n return deletedEntities;\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Strapi;\n db: Database;\n eventHub: EventHub;\n entityValidator: EntityValidator;\n}): Decoratable<EntityService.EntityService> => {\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n ctx.strapi.webhookStore?.addAllowedEvent(key, value);\n });\n\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof EntityService.EntityService) =>\n async function (this: EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<EntityService.EntityService>;\n};\n"],"names":["convertQueryParams","params","databaseErrors","applyTransforms","sanitize","pickSelectionParams","contentTypesUtils","createComponents","omitComponentData","updateComponents","getComponents","deleteComponents","_","cloneComponents","relationUtils","delegate","errors"],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n errors,\n relations as relationUtils,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type { Core, Modules, Utils } from '@strapi/types';\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: Modules.EntityService.EntityService) => Modules.EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = strapi\n .get('query-params')\n .transform(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n}: {\n strapi: Core.Strapi;\n db: Database;\n}): Modules.EntityService.EntityService => ({\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n if (kind === 'singleType') {\n const entity = strapi.documents!(uid).findFirst(wrappedParams);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await strapi.documents!(uid).findMany(wrappedParams);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = strapi.get('query-params').transform(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n const res = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!res) {\n return this.wrapResult(null, { uid, action: 'findOne' });\n }\n\n const entity = await strapi.documents!(uid).findOne({\n ...wrappedParams,\n documentId: res.documentId,\n });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n return strapi.documents!(uid).count(wrappedParams);\n },\n\n async create(uid, params) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data' | 'fields' | 'populate'>\n >(params, { uid, action: 'create' });\n const { data } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(data, strapi.getModel(uid));\n\n const entity = await strapi.documents!(uid).create({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n });\n\n return this.wrapResult(entity, { uid, action: 'create' });\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data:partial' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return this.wrapResult(null, { uid, action: 'update' });\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(entityToUpdate, strapi.getModel(uid));\n\n const entity = strapi.documents!(uid).update({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n documentId: entityToUpdate.documentId,\n });\n\n return this.wrapResult(entity, { uid, action: 'update' });\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToDelete) {\n return this.wrapResult(null, { uid, action: 'delete' });\n }\n\n await strapi.documents!(uid).delete({\n ...wrappedParams,\n documentId: entityToDelete.documentId,\n });\n\n return this.wrapResult(entityToDelete, { uid, action: 'delete' });\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Core.Strapi;\n db: Database;\n}): Decoratable<Modules.EntityService.EntityService> => {\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: Modules.EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof Modules.EntityService.EntityService) =>\n async function (this: Modules.EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<Modules.EntityService.EntityService>;\n};\n"],"names":["databaseErrors","strapi","contentTypesUtils","_","relationUtils","delegate","errors"],"mappings":"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"}
@@ -1,14 +1,9 @@
1
1
  import _ from "lodash";
2
2
  import delegate from "delegates";
3
3
  import { errors } from "@strapi/database";
4
- import { errors as errors$1, sanitize, contentTypes, relations, convertQueryParams } from "@strapi/utils";
5
- import uploadFile from "../utils/upload-files.mjs";
6
- import { createComponents, omitComponentData, updateComponents, getComponents, deleteComponents, cloneComponents } from "./components.mjs";
7
- import { pickSelectionParams } from "./params.mjs";
8
- import { applyTransforms } from "./attributes/index.mjs";
9
- const { transformParamsToQuery } = convertQueryParams;
4
+ import { errors as errors$1, contentTypes, relations } from "@strapi/utils";
10
5
  const transformLoadParamsToQuery = (uid, field, params, pagination = {}) => {
11
- const query = transformParamsToQuery(uid, { populate: { [field]: params } });
6
+ const query = strapi.get("query-params").transform(uid, { populate: { [field]: params } });
12
7
  const res = {
13
8
  ...query.populate[field],
14
9
  ...pagination
@@ -21,240 +16,89 @@ const databaseErrorsToTransform = [
21
16
  errors.InvalidDateError,
22
17
  errors.InvalidRelationError
23
18
  ];
24
- const creationPipeline = (data, context) => {
25
- return applyTransforms(data, context);
26
- };
27
- const updatePipeline = (data, context) => {
28
- return applyTransforms(data, context);
29
- };
30
- const ALLOWED_WEBHOOK_EVENTS = {
31
- ENTRY_CREATE: "entry.create",
32
- ENTRY_UPDATE: "entry.update",
33
- ENTRY_DELETE: "entry.delete"
34
- };
35
19
  const createDefaultImplementation = ({
36
- strapi,
37
- db,
38
- eventHub,
39
- entityValidator
20
+ strapi: strapi2,
21
+ db
40
22
  }) => ({
41
- /**
42
- * Upload files utility
43
- */
44
- uploadFiles: uploadFile,
45
23
  async wrapParams(options = {}) {
46
24
  return options;
47
25
  },
48
26
  async wrapResult(result = {}) {
49
27
  return result;
50
28
  },
51
- async emitEvent(uid, event, entity) {
52
- if (uid === "admin::audit-log") {
53
- return;
54
- }
55
- const model = strapi.getModel(uid);
56
- const sanitizedEntity = await sanitize.sanitizers.defaultSanitizeOutput(model, entity);
57
- eventHub.emit(event, {
58
- model: model.modelName,
59
- uid: model.uid,
60
- entry: sanitizedEntity
61
- });
62
- },
63
29
  async findMany(uid, opts) {
64
- const { kind } = strapi.getModel(uid);
30
+ const { kind } = strapi2.getModel(uid);
65
31
  const wrappedParams = await this.wrapParams(opts, { uid, action: "findMany" });
66
- const query = transformParamsToQuery(uid, wrappedParams);
67
32
  if (kind === "singleType") {
68
- const entity = db.query(uid).findOne(query);
33
+ const entity = strapi2.documents(uid).findFirst(wrappedParams);
69
34
  return this.wrapResult(entity, { uid, action: "findOne" });
70
35
  }
71
- const entities = await db.query(uid).findMany(query);
36
+ const entities = await strapi2.documents(uid).findMany(wrappedParams);
72
37
  return this.wrapResult(entities, { uid, action: "findMany" });
73
38
  },
74
39
  async findPage(uid, opts) {
75
40
  const wrappedParams = await this.wrapParams(opts, { uid, action: "findPage" });
76
- const query = transformParamsToQuery(uid, wrappedParams);
77
- const page = await db.query(uid).findPage(query);
78
- return {
79
- ...page,
80
- results: await this.wrapResult(page.results, { uid, action: "findPage" })
81
- };
82
- },
83
- // TODO: streamline the logic based on the populate option
84
- async findWithRelationCountsPage(uid, opts) {
85
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findWithRelationCounts" });
86
- const query = transformParamsToQuery(uid, wrappedParams);
41
+ const query = strapi2.get("query-params").transform(uid, wrappedParams);
87
42
  const entities = await db.query(uid).findPage(query);
88
- return {
89
- ...entities,
90
- results: await this.wrapResult(entities.results, { uid, action: "findWithRelationCounts" })
91
- };
92
- },
93
- async findWithRelationCounts(uid, opts) {
94
- const wrappedParams = await this.wrapParams(opts, { uid, action: "findWithRelationCounts" });
95
- const query = transformParamsToQuery(uid, wrappedParams);
96
- const entities = await db.query(uid).findMany(query);
97
- return this.wrapResult(entities, { uid, action: "findWithRelationCounts" });
43
+ return this.wrapResult(entities, { uid, action: "findMany" });
98
44
  },
99
45
  async findOne(uid, entityId, opts) {
100
46
  const wrappedParams = await this.wrapParams(opts, { uid, action: "findOne" });
101
- const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));
102
- const entity = await db.query(uid).findOne({ ...query, where: { id: entityId } });
47
+ const res = await db.query(uid).findOne({ where: { id: entityId } });
48
+ if (!res) {
49
+ return this.wrapResult(null, { uid, action: "findOne" });
50
+ }
51
+ const entity = await strapi2.documents(uid).findOne({
52
+ ...wrappedParams,
53
+ documentId: res.documentId
54
+ });
103
55
  return this.wrapResult(entity, { uid, action: "findOne" });
104
56
  },
105
57
  async count(uid, opts) {
106
58
  const wrappedParams = await this.wrapParams(opts, { uid, action: "count" });
107
- const query = transformParamsToQuery(uid, wrappedParams);
108
- return db.query(uid).count(query);
59
+ return strapi2.documents(uid).count(wrappedParams);
109
60
  },
110
61
  async create(uid, params) {
111
62
  const wrappedParams = await this.wrapParams(params, { uid, action: "create" });
112
- const { data, files } = wrappedParams;
63
+ const { data } = wrappedParams;
113
64
  if (!data) {
114
65
  throw new Error("cannot create");
115
66
  }
116
- const model = strapi.getModel(uid);
117
- const isDraft = contentTypes.isDraft(data, model);
118
- const validData = await entityValidator.validateEntityCreation(model, data, { isDraft });
119
- const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));
120
- const componentData = await createComponents(uid, validData);
121
- const entityData = creationPipeline(
122
- Object.assign(omitComponentData(model, validData), componentData),
123
- {
124
- contentType: model
125
- }
126
- );
127
- let entity = await db.query(uid).create({
128
- ...query,
129
- data: entityData
67
+ const shouldPublish = !contentTypes.isDraft(data, strapi2.getModel(uid));
68
+ const entity = await strapi2.documents(uid).create({
69
+ ...wrappedParams,
70
+ status: shouldPublish ? "published" : "draft"
130
71
  });
131
- if (files && Object.keys(files).length > 0) {
132
- await this.uploadFiles(uid, Object.assign(entityData, entity), files);
133
- entity = await this.findOne(uid, entity.id, wrappedParams);
134
- }
135
- entity = await this.wrapResult(entity, { uid, action: "create" });
136
- const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;
137
- await this.emitEvent(uid, ENTRY_CREATE, entity);
138
- return entity;
72
+ return this.wrapResult(entity, { uid, action: "create" });
139
73
  },
140
74
  async update(uid, entityId, opts) {
141
75
  const wrappedParams = await this.wrapParams(opts, {
142
76
  uid,
143
77
  action: "update"
144
78
  });
145
- const { data, files } = wrappedParams;
146
- const model = strapi.getModel(uid);
147
79
  const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });
148
80
  if (!entityToUpdate) {
149
- return null;
81
+ return this.wrapResult(null, { uid, action: "update" });
150
82
  }
151
- const isDraft = contentTypes.isDraft(entityToUpdate, model);
152
- const validData = await entityValidator.validateEntityUpdate(
153
- model,
154
- data,
155
- {
156
- isDraft
157
- },
158
- entityToUpdate
159
- );
160
- const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));
161
- const componentData = await updateComponents(uid, entityToUpdate, validData);
162
- const entityData = updatePipeline(
163
- Object.assign(omitComponentData(model, validData), componentData),
164
- { contentType: model }
165
- );
166
- let entity = await db.query(uid).update({
167
- ...query,
168
- where: { id: entityId },
169
- data: entityData
83
+ const shouldPublish = !contentTypes.isDraft(entityToUpdate, strapi2.getModel(uid));
84
+ const entity = strapi2.documents(uid).update({
85
+ ...wrappedParams,
86
+ status: shouldPublish ? "published" : "draft",
87
+ documentId: entityToUpdate.documentId
170
88
  });
171
- if (files && Object.keys(files).length > 0) {
172
- await this.uploadFiles(uid, Object.assign(entityData, entity), files);
173
- entity = await this.findOne(uid, entity.id, wrappedParams);
174
- }
175
- entity = await this.wrapResult(entity, { uid, action: "update" });
176
- const { ENTRY_UPDATE } = ALLOWED_WEBHOOK_EVENTS;
177
- await this.emitEvent(uid, ENTRY_UPDATE, entity);
178
- return entity;
89
+ return this.wrapResult(entity, { uid, action: "update" });
179
90
  },
180
91
  async delete(uid, entityId, opts) {
181
92
  const wrappedParams = await this.wrapParams(opts, { uid, action: "delete" });
182
- const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));
183
- let entityToDelete = await db.query(uid).findOne({
184
- ...query,
185
- where: { id: entityId }
186
- });
93
+ const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });
187
94
  if (!entityToDelete) {
188
- return null;
95
+ return this.wrapResult(null, { uid, action: "delete" });
189
96
  }
190
- const componentsToDelete = await getComponents(uid, entityToDelete);
191
- await db.query(uid).delete({ where: { id: entityToDelete.id } });
192
- await deleteComponents(uid, componentsToDelete, { loadComponents: false });
193
- entityToDelete = await this.wrapResult(entityToDelete, { uid, action: "delete" });
194
- const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;
195
- await this.emitEvent(uid, ENTRY_DELETE, entityToDelete);
196
- return entityToDelete;
197
- },
198
- async clone(uid, cloneId, opts) {
199
- const wrappedParams = await this.wrapParams(opts, { uid, action: "clone" });
200
- const { data, files } = wrappedParams;
201
- if (!data) {
202
- throw new Error("cannot clone");
203
- }
204
- const model = strapi.getModel(uid);
205
- const entityToClone = await db.query(uid).findOne({ where: { id: cloneId } });
206
- if (!entityToClone) {
207
- return null;
208
- }
209
- const isDraft = contentTypes.isDraft(entityToClone, model);
210
- const validData = await entityValidator.validateEntityUpdate(
211
- model,
212
- // Omit the id, the cloned entity id will be generated by the database
213
- _.omit(data, ["id"]),
214
- { isDraft },
215
- entityToClone
216
- );
217
- const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));
218
- const componentData = await cloneComponents(uid, entityToClone, validData);
219
- const entityData = creationPipeline(
220
- Object.assign(omitComponentData(model, validData), componentData),
221
- {
222
- contentType: model
223
- }
224
- );
225
- let entity = await db.query(uid).clone(cloneId, {
226
- ...query,
227
- data: entityData
97
+ await strapi2.documents(uid).delete({
98
+ ...wrappedParams,
99
+ documentId: entityToDelete.documentId
228
100
  });
229
- if (files && Object.keys(files).length > 0) {
230
- await this.uploadFiles(uid, Object.assign(entityData, entity), files);
231
- entity = await this.findOne(uid, entity.id, wrappedParams);
232
- }
233
- const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;
234
- await this.emitEvent(uid, ENTRY_CREATE, entity);
235
- return entity;
236
- },
237
- // FIXME: used only for the CM to be removed
238
- async deleteMany(uid, opts) {
239
- const wrappedParams = await this.wrapParams(opts, { uid, action: "delete" });
240
- const query = transformParamsToQuery(uid, wrappedParams);
241
- let entitiesToDelete = await db.query(uid).findMany(query);
242
- if (!entitiesToDelete.length) {
243
- return { count: 0 };
244
- }
245
- const componentsToDelete = await Promise.all(
246
- entitiesToDelete.map((entityToDelete) => getComponents(uid, entityToDelete))
247
- );
248
- const deletedEntities = await db.query(uid).deleteMany(query);
249
- await Promise.all(
250
- componentsToDelete.map(
251
- (compos) => deleteComponents(uid, compos, { loadComponents: false })
252
- )
253
- );
254
- entitiesToDelete = await this.wrapResult(entitiesToDelete, { uid, action: "delete" });
255
- const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;
256
- await Promise.all(entitiesToDelete.map((entity) => this.emitEvent(uid, ENTRY_DELETE, entity)));
257
- return deletedEntities;
101
+ return this.wrapResult(entityToDelete, { uid, action: "delete" });
258
102
  },
259
103
  async load(uid, entity, field, params) {
260
104
  if (!_.isString(field)) {
@@ -267,7 +111,7 @@ const createDefaultImplementation = ({
267
111
  if (!_.isString(field)) {
268
112
  throw new Error(`Invalid load. Expected "${field}" to be a string`);
269
113
  }
270
- const { attributes } = strapi.getModel(uid);
114
+ const { attributes } = strapi2.getModel(uid);
271
115
  const attribute = attributes[field];
272
116
  if (!relations.isAnyToMany(attribute)) {
273
117
  throw new Error(`Invalid load. Expected "${field}" to be an anyToMany relational attribute`);
@@ -281,9 +125,6 @@ const createDefaultImplementation = ({
281
125
  }
282
126
  });
283
127
  const createEntityService = (ctx) => {
284
- Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {
285
- ctx.strapi.webhookStore?.addAllowedEvent(key, value);
286
- });
287
128
  const implementation = createDefaultImplementation(ctx);
288
129
  const service = {
289
130
  implementation,
@@ -1 +1 @@
1
- {"version":3,"file":"index.mjs","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n sanitize,\n errors,\n relations as relationUtils,\n convertQueryParams,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type {\n Strapi,\n EntityService,\n EntityValidator,\n EventHub,\n Common,\n Schema,\n Shared,\n Utils,\n} from '@strapi/types';\n\nimport uploadFiles from '../utils/upload-files';\n\nimport {\n omitComponentData,\n getComponents,\n createComponents,\n updateComponents,\n deleteComponents,\n cloneComponents,\n} from './components';\n\nimport { pickSelectionParams } from './params';\nimport { applyTransforms } from './attributes';\n\nconst { transformParamsToQuery } = convertQueryParams;\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: EntityService.EntityService) => EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\ntype Context = {\n contentType: Schema.ContentType;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = transformParamsToQuery(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst creationPipeline = (data: Record<string, unknown>, context: Context) => {\n return applyTransforms(data, context);\n};\n\nconst updatePipeline = (data: Record<string, unknown>, context: Context) => {\n return applyTransforms(data, context);\n};\n\nconst ALLOWED_WEBHOOK_EVENTS = {\n ENTRY_CREATE: 'entry.create',\n ENTRY_UPDATE: 'entry.update',\n ENTRY_DELETE: 'entry.delete',\n};\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n eventHub,\n entityValidator,\n}: {\n strapi: Strapi;\n db: Database;\n eventHub: EventHub;\n entityValidator: EntityValidator;\n}): EntityService.EntityService => ({\n /**\n * Upload files utility\n */\n uploadFiles,\n\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async emitEvent(uid, event: string, entity) {\n // Ignore audit log events to prevent infinite loops\n if (uid === ('admin::audit-log' as Common.UID.ContentType)) {\n return;\n }\n\n const model = strapi.getModel(uid);\n const sanitizedEntity = await sanitize.sanitizers.defaultSanitizeOutput(model, entity);\n\n eventHub.emit(event, {\n model: model.modelName,\n uid: model.uid,\n entry: sanitizedEntity,\n });\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n if (kind === 'singleType') {\n const entity = db.query(uid).findOne(query);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await db.query(uid).findMany(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const page = await db.query(uid).findPage(query);\n return {\n ...page,\n results: await this.wrapResult(page.results, { uid, action: 'findPage' }),\n };\n },\n\n // TODO: streamline the logic based on the populate option\n async findWithRelationCountsPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findWithRelationCounts' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return {\n ...entities,\n results: await this.wrapResult(entities.results, { uid, action: 'findWithRelationCounts' }),\n };\n },\n\n async findWithRelationCounts(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findWithRelationCounts' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n const entities = await db.query(uid).findMany(query);\n return this.wrapResult(entities, { uid, action: 'findWithRelationCounts' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n const entity = await db.query(uid).findOne({ ...query, where: { id: entityId } });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n const query = transformParamsToQuery(uid, wrappedParams);\n\n return db.query(uid).count(query);\n },\n\n async create<\n TUID extends Common.UID.ContentType,\n TParams extends EntityService.Params.Pick<TUID, 'data' | 'files' | 'fields' | 'populate'>\n >(uid: TUID, params?: TParams) {\n const wrappedParams = await this.wrapParams<TParams>(params, { uid, action: 'create' });\n const { data, files } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const model = strapi.getModel(uid) as Shared.ContentTypes[Common.UID.ContentType];\n\n const isDraft = contentTypesUtils.isDraft(data, model);\n const validData = await entityValidator.validateEntityCreation(model, data, { isDraft });\n\n // select / populate\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap into transaction\n const componentData = await createComponents(uid, validData);\n\n const entityData = creationPipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n {\n contentType: model,\n }\n );\n let entity = await db.query(uid).create({\n ...query,\n data: entityData,\n });\n\n // TODO: do all of this in a transaction to avoid a race condition where entity is created then deleted before we do findOne again\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n entity = await this.wrapResult(entity, { uid, action: 'create' });\n\n const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_CREATE, entity);\n\n return entity;\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n EntityService.Params.Pick<typeof uid, 'data:partial' | 'files' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const { data, files } = wrappedParams;\n\n const model = strapi.getModel(uid);\n\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return null;\n }\n\n const isDraft = contentTypesUtils.isDraft(entityToUpdate, model);\n\n const validData = await entityValidator.validateEntityUpdate(\n model,\n data,\n {\n isDraft,\n },\n entityToUpdate\n );\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap in transaction\n const componentData = await updateComponents(uid, entityToUpdate, validData);\n const entityData = updatePipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n { contentType: model }\n );\n\n let entity = await db.query(uid).update({\n ...query,\n where: { id: entityId },\n data: entityData,\n });\n\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n entity = await this.wrapResult(entity, { uid, action: 'update' });\n\n const { ENTRY_UPDATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_UPDATE, entity);\n\n return entity;\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n // select / populate\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n let entityToDelete = await db.query(uid).findOne({\n ...query,\n where: { id: entityId },\n });\n\n if (!entityToDelete) {\n return null;\n }\n\n const componentsToDelete = await getComponents(uid, entityToDelete);\n\n await db.query(uid).delete({ where: { id: entityToDelete.id } });\n await deleteComponents(uid, componentsToDelete as any, { loadComponents: false });\n\n entityToDelete = await this.wrapResult(entityToDelete, { uid, action: 'delete' });\n\n const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_DELETE, entityToDelete);\n\n return entityToDelete;\n },\n\n async clone(uid, cloneId, opts) {\n const wrappedParams = await this.wrapParams<\n EntityService.Params.Pick<typeof uid, 'data' | 'files' | 'fields' | 'populate'>\n >(opts, { uid, action: 'clone' });\n const { data, files } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot clone');\n }\n\n const model = strapi.getModel(uid);\n\n const entityToClone = await db.query(uid).findOne({ where: { id: cloneId } });\n\n if (!entityToClone) {\n return null;\n }\n const isDraft = contentTypesUtils.isDraft(entityToClone, model);\n\n const validData = await entityValidator.validateEntityUpdate(\n model,\n // Omit the id, the cloned entity id will be generated by the database\n _.omit(data, ['id']) as Partial<typeof data>,\n { isDraft },\n entityToClone\n );\n\n // @ts-expect-error - fix\n const query = transformParamsToQuery(uid, pickSelectionParams(wrappedParams));\n\n // TODO: wrap into transaction\n const componentData = await cloneComponents(uid, entityToClone, validData);\n\n const entityData = creationPipeline(\n Object.assign(omitComponentData(model, validData), componentData),\n {\n contentType: model,\n }\n );\n\n let entity = await db.query(uid).clone(cloneId, {\n ...query,\n data: entityData,\n });\n\n // TODO: upload the files then set the links in the entity like with compo to avoid making too many queries\n if (files && Object.keys(files).length > 0) {\n await this.uploadFiles(uid, Object.assign(entityData, entity), files);\n entity = await this.findOne(uid, entity.id, wrappedParams);\n }\n\n const { ENTRY_CREATE } = ALLOWED_WEBHOOK_EVENTS;\n await this.emitEvent(uid, ENTRY_CREATE, entity);\n\n return entity;\n },\n // FIXME: used only for the CM to be removed\n async deleteMany(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n // select / populate\n const query = transformParamsToQuery(uid, wrappedParams);\n\n let entitiesToDelete = await db.query(uid).findMany(query);\n\n if (!entitiesToDelete.length) {\n return { count: 0 };\n }\n\n const componentsToDelete = await Promise.all(\n entitiesToDelete.map((entityToDelete) => getComponents(uid, entityToDelete))\n );\n\n const deletedEntities = await db.query(uid).deleteMany(query);\n await Promise.all(\n componentsToDelete.map((compos) =>\n deleteComponents(uid, compos as any, { loadComponents: false })\n )\n );\n\n entitiesToDelete = await this.wrapResult(entitiesToDelete, { uid, action: 'delete' });\n\n // Trigger webhooks. One for each entity\n const { ENTRY_DELETE } = ALLOWED_WEBHOOK_EVENTS;\n await Promise.all(entitiesToDelete.map((entity) => this.emitEvent(uid, ENTRY_DELETE, entity)));\n\n return deletedEntities;\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Strapi;\n db: Database;\n eventHub: EventHub;\n entityValidator: EntityValidator;\n}): Decoratable<EntityService.EntityService> => {\n Object.entries(ALLOWED_WEBHOOK_EVENTS).forEach(([key, value]) => {\n ctx.strapi.webhookStore?.addAllowedEvent(key, value);\n });\n\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof EntityService.EntityService) =>\n async function (this: EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<EntityService.EntityService>;\n};\n"],"names":["databaseErrors","uploadFiles","contentTypesUtils","relationUtils","errors"],"mappings":"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"}
1
+ {"version":3,"file":"index.mjs","sources":["../../../src/services/entity-service/index.ts"],"sourcesContent":["import _ from 'lodash';\nimport delegate from 'delegates';\nimport { errors as databaseErrors } from '@strapi/database';\nimport {\n contentTypes as contentTypesUtils,\n errors,\n relations as relationUtils,\n} from '@strapi/utils';\nimport type { Database } from '@strapi/database';\nimport type { Core, Modules, Utils } from '@strapi/types';\n\ntype Decoratable<T> = T & {\n decorate(\n decorator: (old: Modules.EntityService.EntityService) => Modules.EntityService.EntityService & {\n [key: string]: unknown;\n }\n ): void;\n};\n\nconst transformLoadParamsToQuery = (\n uid: string,\n field: string,\n params: Record<string, unknown>,\n pagination = {}\n) => {\n const query = strapi\n .get('query-params')\n .transform(uid, { populate: { [field]: params } as any }) as any;\n\n const res = {\n ...query.populate[field],\n ...pagination,\n };\n\n return res;\n};\n\nconst databaseErrorsToTransform = [\n databaseErrors.InvalidTimeError,\n databaseErrors.InvalidDateTimeError,\n databaseErrors.InvalidDateError,\n databaseErrors.InvalidRelationError,\n];\n\nconst createDefaultImplementation = ({\n strapi,\n db,\n}: {\n strapi: Core.Strapi;\n db: Database;\n}): Modules.EntityService.EntityService => ({\n async wrapParams(options: any = {}) {\n return options;\n },\n\n async wrapResult(result: any = {}) {\n return result;\n },\n\n async findMany(uid, opts) {\n const { kind } = strapi.getModel(uid);\n\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findMany' });\n\n if (kind === 'singleType') {\n const entity = strapi.documents!(uid).findFirst(wrappedParams);\n return this.wrapResult(entity, { uid, action: 'findOne' });\n }\n\n const entities = await strapi.documents!(uid).findMany(wrappedParams);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findPage(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findPage' });\n\n const query = strapi.get('query-params').transform(uid, wrappedParams);\n\n const entities = await db.query(uid).findPage(query);\n return this.wrapResult(entities, { uid, action: 'findMany' });\n },\n\n async findOne(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'findOne' });\n\n const res = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!res) {\n return this.wrapResult(null, { uid, action: 'findOne' });\n }\n\n const entity = await strapi.documents!(uid).findOne({\n ...wrappedParams,\n documentId: res.documentId,\n });\n return this.wrapResult(entity, { uid, action: 'findOne' });\n },\n\n async count(uid, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'count' });\n\n return strapi.documents!(uid).count(wrappedParams);\n },\n\n async create(uid, params) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data' | 'fields' | 'populate'>\n >(params, { uid, action: 'create' });\n const { data } = wrappedParams;\n\n if (!data) {\n throw new Error('cannot create');\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(data, strapi.getModel(uid));\n\n const entity = await strapi.documents!(uid).create({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n });\n\n return this.wrapResult(entity, { uid, action: 'create' });\n },\n\n async update(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams<\n Modules.EntityService.Params.Pick<typeof uid, 'data:partial' | 'fields' | 'populate'>\n >(opts, {\n uid,\n action: 'update',\n });\n const entityToUpdate = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToUpdate) {\n return this.wrapResult(null, { uid, action: 'update' });\n }\n\n const shouldPublish = !contentTypesUtils.isDraft(entityToUpdate, strapi.getModel(uid));\n\n const entity = strapi.documents!(uid).update({\n ...(wrappedParams as any),\n status: shouldPublish ? 'published' : 'draft',\n documentId: entityToUpdate.documentId,\n });\n\n return this.wrapResult(entity, { uid, action: 'update' });\n },\n\n async delete(uid, entityId, opts) {\n const wrappedParams = await this.wrapParams(opts, { uid, action: 'delete' });\n\n const entityToDelete = await db.query(uid).findOne({ where: { id: entityId } });\n\n if (!entityToDelete) {\n return this.wrapResult(null, { uid, action: 'delete' });\n }\n\n await strapi.documents!(uid).delete({\n ...wrappedParams,\n documentId: entityToDelete.documentId,\n });\n\n return this.wrapResult(entityToDelete, { uid, action: 'delete' });\n },\n\n async load(uid, entity, field, params) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const loadedEntity = await db\n .query(uid)\n .load(entity, field, transformLoadParamsToQuery(uid, field, params ?? {}));\n\n return this.wrapResult(loadedEntity, { uid, field, action: 'load' });\n },\n\n async loadPages(uid, entity, field, params, pagination = {}) {\n if (!_.isString(field)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be a string`);\n }\n\n const { attributes } = strapi.getModel(uid);\n const attribute = attributes[field];\n\n if (!relationUtils.isAnyToMany(attribute)) {\n throw new Error(`Invalid load. Expected \"${field}\" to be an anyToMany relational attribute`);\n }\n\n const query = transformLoadParamsToQuery(uid, field, params ?? {}, pagination);\n\n const loadedPage = await db.query(uid).loadPages(entity, field, query);\n\n return {\n ...loadedPage,\n results: await this.wrapResult(loadedPage.results, { uid, field, action: 'load' }),\n };\n },\n});\n\nexport default (ctx: {\n strapi: Core.Strapi;\n db: Database;\n}): Decoratable<Modules.EntityService.EntityService> => {\n const implementation = createDefaultImplementation(ctx);\n\n const service = {\n implementation,\n decorate<T extends object>(decorator: (current: typeof implementation) => T) {\n if (typeof decorator !== 'function') {\n throw new Error(`Decorator must be a function, received ${typeof decorator}`);\n }\n\n this.implementation = { ...this.implementation, ...decorator(this.implementation) };\n return this;\n },\n };\n\n const delegator = delegate(service, 'implementation');\n\n // delegate every method in implementation\n Object.keys(service.implementation).forEach((key) => delegator.method(key));\n\n // wrap methods to handle Database Errors\n service.decorate((oldService: Modules.EntityService.EntityService) => {\n const newService = _.mapValues(\n oldService,\n (method, methodName: keyof Modules.EntityService.EntityService) =>\n async function (this: Modules.EntityService.EntityService, ...args: []) {\n try {\n return await (oldService[methodName] as Utils.Function.AnyPromise).call(this, ...args);\n } catch (error) {\n if (\n databaseErrorsToTransform.some(\n (errorToTransform) => error instanceof errorToTransform\n )\n ) {\n if (error instanceof Error) {\n throw new errors.ValidationError(error.message);\n }\n\n throw error;\n }\n throw error;\n }\n }\n );\n\n return newService;\n });\n\n return service as unknown as Decoratable<Modules.EntityService.EntityService>;\n};\n"],"names":["databaseErrors","strapi","contentTypesUtils","relationUtils","errors"],"mappings":"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"}
@@ -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":";;AAEA,MAAM,oBAAoBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAC3C,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS;AAAA,EAC7C,MAAMA,YAAAA,IACH,OAAA,EACA;AAAA,IACC;AAAA,IACA;AAAA,IACA,CAAC,SAAkB;AACV,aAAA,OAAO,SAAS,YAAY,SAAS;AAAA,IAC9C;AAAA,EACF;AAAA,EACF,MAAMA,gBAAI,QAAQ;AAAA,EAClB,QAAQA,gBAAI,QAAQ;AAAA,EACpB,WAAWA,gBAAI,QAAQ;AAAA,EACvB,eAAeA,gBAAI,QAAQ;AAAA,EAC3B,MAAMA,gBAAI,QAAQ;AACpB,CAAC;AAED,MAAM,iBAAiB,CAAC,SAAiB;AACnC,MAAA;AAEE,QAAA,IAAI,KAAK,WAAW,GAAG,IAAI,oBAAoB,IAAI,KAAK,IAAI;AAAA,WACzD,OAAO;AACP,WAAA;AAAA,EACT;AACO,SAAA;AACT;AAEA,MAAM,oBAAoBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAC3C,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS;AAAA,EAC7C,KAAKA,YAAA,IACF,OAAO,EACP,KAAK,eAAe,gCAAgC,CAAC,UAAU,eAAe,SAAS,EAAE,CAAC;AAAA,EAC7F,UAAUA,YAAI,IAAA,MAAA,EAAQ,GAAG,iBAAiB,EAAE,SAAS;AACvD,CAAC;AAGD,MAAM,sBAA2BA,YAAA,IAAI,KAAK,CAAC,UAA4B;AACrE,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT;AACE,aAAOA,YAAAA,IAAI,MAAM,EAAE,KAAK,gBAAgB,oCAAoC,MAAM;AACzE,eAAA;AAAA,MAAA,CACR;AAAA,EACL;AACF,CAAC;AAED,MAAM,yBAAyBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAChD,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS;AAAA,EAClD,UAAUA,YACP,IAAA,MACA,EAAA,GAAG,mBAAmB,EACtB,IAAI,GAAG,kEAAkE,EACzE,SAAS;AACd,CAAC;AAED,MAAM,uBAAuBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAC9C,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,SAAS,CAAC,EAAE,SAAS;AAAA,EAChD,OAAOA,YAAAA,IAAI,SAAS,MAAM,CAAC,GAAG,GAAG,GAAG,GAAG,GAAG,CAAC,CAAC,EAAE,SAAS;AAAA,EACvD,UAAUA,YACP,IAAA,MACA,EAAA,GAAG,mBAAmB,EACtB,IAAI,GAAG,gEAAgE,EACvE,SAAS;AACd,CAAC;AAED,MAAM,qBAAqBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAC5C,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9C,UAAUA,YACP,IAAA,MACA,EAAA,GAAG,mBAAmB,EACtB,IAAI,GAAG,8DAA8D,EACrE,SAAS;AACd,CAAC;AAED,MAAM,qBAAqBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAC5C,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS;AAAA,EAC7C,QAAQA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,EAC9B,UAAUA,YACP,IAAA,MACA,EAAA,GAAG,iBAAiB,EACpB,IAAI,GAAG,8DAA8D,EACrE,SAAS;AACd,CAAC;AAED,MAAM,eAAeA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EACtC,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,WAAW,CAAC,EAAE,SAAS;AAAA,EAClD,UAAUA,YAAI,IAAA,MAAA,EAAQ,GAAG,mBAAmB,EAAE,SAAS;AACzD,CAAC;AAID,MAAM,wBAAwBA,YAAA,IAAI,KAAK,CAAC,UAA4B;AAClE,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT;AACE,aAAOA,YAAAA,IAAI,MAAM,EAAE,KAAK,gBAAgB,yCAAyC,MAAM;AAC9E,eAAA;AAAA,MAAA,CACR;AAAA,EACL;AACF,CAAC;AAGD,MAAM,oBAAoBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAC3C,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,SAAS;AAAA,EAC7C,QAAQA,YAAAA,IAAI,SAAS,OAAO,CAAC,WAAW,WAAW,CAAC,EAAE,SAAS;AAAA,EAC/D,UAAUA,YACP,IAAA,MACA,EAAA,GAAG,qBAAqB,EACxB,IAAI,GAAG,gEAAgE,EACvE,SAAS;AACd,CAAC;AAED,MAAM,qBAAqBA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,EAC5C,MAAMA,gBAAI,OAAO,EAAE,OAAO,CAAC,OAAO,CAAC,EAAE,SAAS;AAAA,EAC9C,OAAOA,YAAA,IAAI,OAAO,EAAE,MAAM;AAAA,IACxB,MAAMA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC5B,iBAAiBA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IACvC,KAAKA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC3B,SAASA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC/B,OAAOA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC7B,QAAQA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC9B,SAASA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC/B,MAAMA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC5B,KAAKA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC3B,MAAMA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC5B,MAAMA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAC5B,YAAYA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAClC,UAAUA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IAChC,mBAAmBA,YAAA,IAAI,MAAM,EAAE,SAAS;AAAA,IACxC,WAAWA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,IACjC,WAAWA,YAAA,IAAI,OAAO,EAAE,SAAS;AAAA,EAAA,CAClC;AAAA,EACD,UAAUA,YAAI,IAAA,MAAA,EAAQ,GAAG,mBAAmB,EAAE,SAAS;AACzD,CAAC;AAGD,MAAM,qBAA0BA,YAAA,IAAI,KAAK,CAAC,UAA4B;AACpE,UAAQ,MAAM,MAAM;AAAA,IAClB,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT,KAAK;AACI,aAAA;AAAA,IACT;AACE,aAAOA,YAAAA,IAAI,MAAM,EAAE,KAAK,gBAAgB,iCAAiC,MAAM;AACtE,eAAA;AAAA,MAAA,CACR;AAAA,EACL;AACF,CAAC;AAED,MAAM,kBAAkBA,YAAAA,IAAI,MAAM,EAAE,GAAG,kBAAkB;AAGzD,MAAA,oBAAe,CAAC,OAAY,YAAiB;;"}
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